2010-06-21 2 views

ответ

19

Ну решение, которое я использую:

Это получает столбец ID из последней строки, вставленной в БД :)

+2

Дополнительную информацию об этом подходе см. В документации в операторе [SELECT from INSERT] (http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.db2.doc.relg%2Finsl.htm) – Steven

+1

Трагедия , Эта документация «SELECT from INSERT» изменила местоположение или стала недоступна. – starlocke

+2

Проверьте раздел * Выбор вставленных значений * в руководстве по программированию DB2 SQL. Пример из моего руководства является 'ВЫБРАТЬ EMPNO, HIRETYPE, HIREDATE ОТ финальным столом (INSERT INTO EMPSAMP (NAME, ЗАРПЛАТА, DEPTNO, LEVEL) VALUES ('Мэри Смит', 35000,00, 11, 'Associate'))' – Telemat

13
SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1 

См. docs.

+0

SYSDUMMY1? Я не могу найти эту таблицу в схеме sysibm ... :) –

+0

Вы иронично? См. Http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0002369.html –

0

взглянуть на этот ответ.

http://www.sitepoint.com/php-database-db2/

// get the last inserted ID into the specified table 
// int lastInsertID(string $tblName) 
function lastInsertID($tblName) 
{ 
if ($this->transIsOpen()) 
{ 
    $sql = "SELECT SYSIBM.IDENTITY_VAL_LOCAL() AS id FROM " . $tblName; 
    $rs = $this->query($sql); 
    return $this->fetch($rs, "id"); 
} 
return -1; 
} 

ИЛИ это

http://www.php.net/manual/en/function.db2-last-insert-id.php#98361

0
int keyId = -1; 
preparedStatement.executeUpdate(); 
resultSet = preparedStatement.getGeneratedKeys(); 
if (resultSet.next()) { 
    keyId = rs.getInt(1); 
} 

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getGeneratedKeys()

Update: и не забудьте создать PreparedStatement со следующим флагом Statement.RETURN_GENERATED_KEYS в противном случае он не будет работать)))

+0

Uhmmm ... Oracle! = DB2 – barrypicker

+0

Это учебник для Java не Oracle – Anatoly

+0

Тогда вы вообще не обращаетесь к вопросу OP. – barrypicker