Doctrine 1.2.4
Doctrine_Sequence_Db2 Class Reference

Inherits Doctrine_Sequence.

Public Member Functions

 currId ($sequenceName)
 
 getConnection ()
 
 getModuleName ()
 
 lastInsertId ($tableName=null, $primaryKey=null)
 
 nextId ($seqName, $ondemand=true)
 

Detailed Description

Definition at line 33 of file Db2.php.

Member Function Documentation

Doctrine_Sequence_Db2::currId (   $sequenceName)

Return the most recent value from the specified sequence in the database. This is supported only on RDBMS brands that support sequences (e.g. Oracle, PostgreSQL, DB2). Other RDBMS brands return null.

Parameters
string$sequenceName
Returns
integer
Exceptions
Doctrine_Adapter_Db2_Exception

Definition at line 77 of file Db2.php.

{
$sql = 'SELECT PREVVAL FOR '
. $this->quoteIdentifier($this->conn->formatter->getSequenceName($sequenceName))
. ' AS VAL FROM SYSIBM.SYSDUMMY1';
$stmt = $this->query($sql);
$result = $stmt->fetchAll(Doctrine_Core::FETCH_ASSOC);
if ($result) {
return $result[0]['VAL'];
} else {
return null;
}
}
Doctrine_Connection_Module::getConnection ( )
inherited

getConnection returns the connection object this module uses

Returns
Doctrine_Connection

Definition at line 68 of file Module.php.

{
return $this->conn;
}
Doctrine_Connection_Module::getModuleName ( )
inherited

getModuleName returns the name of this module

Returns
string the name of this module

Definition at line 79 of file Module.php.

{
return $this->moduleName;
}
Doctrine_Sequence_Db2::lastInsertId (   $tableName = null,
  $primaryKey = null 
)

Gets the last ID generated automatically by an IDENTITY/AUTOINCREMENT column.

As a convention, on RDBMS brands that support sequences (e.g. Oracle, PostgreSQL, DB2), this method forms the name of a sequence from the arguments and returns the last id generated by that sequence. On RDBMS brands that support IDENTITY/AUTOINCREMENT columns, this method returns the last value generated for such a column, and the table name argument is disregarded.

The IDENTITY_VAL_LOCAL() function gives the last generated identity value in the current process, even if it was for a GENERATED column.

Parameters
string$tableNameOPTIONAL
string$primaryKeyOPTIONAL
Returns
integer
Exceptions
Doctrine_Adapter_Db2_Exception

Definition at line 110 of file Db2.php.

{
$this->_connect();
if ($tableName !== null) {
$sequenceName = $tableName;
if ($primaryKey) {
$sequenceName .= "_$primaryKey";
}
$sequenceName .= '_seq';
return $this->lastSequenceId($sequenceName);
}
$sql = 'SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1';
$stmt = $this->query($sql);
$result = $stmt->fetchAll(Doctrine_Core::FETCH_ASSOC);
if ($result) {
return $result[0]['VAL'];
} else {
return null;
}
}
Doctrine_Sequence_Db2::nextId (   $seqName,
  $ondemand = true 
)

Returns the next free id of a sequence

Parameters
string$seqNamename of the sequence
boolwhen true missing sequences are automatic created
Returns
integer next id in the given sequence
Exceptions
Doctrine_Sequence_Exception

Definition at line 44 of file Db2.php.

{
$sequenceName = $this->conn->quoteIdentifier($this->conn->formatter->getSequenceName($seqName), true);
$query = 'SELECT NEXTVAL FOR ' . $sequenceName . ' AS VAL FROM SYSIBM.SYSDUMMY1';
try {
$result = $this->conn->fetchOne($query);
$result = ($result) ? $result['VAL'] : null;
if ($onDemand && $e->getPortableCode() == Doctrine_Core::ERR_NOSUCHTABLE) {
try {
$result = $this->conn->export->createSequence($seqName);
} catch(Doctrine_Exception $e) {
throw new Doctrine_Sequence_Exception('on demand sequence ' . $seqName . ' could not be created');
}
return $this->nextId($seqName, false);
} else {
throw new Doctrine_Sequence_Exception('sequence ' .$seqName . ' does not exist');
}
}
return $result;
}

The documentation for this class was generated from the following file: