如何从表中获取最后一个插入 ID

Posted

技术标签:

【中文标题】如何从表中获取最后一个插入 ID【英文标题】:How to get the last insert ID from a table 【发布时间】:2011-03-06 11:52:51 【问题描述】:

我想获取表中最后一个 ID 插入的值。我该怎么做?

【问题讨论】:

【参考方案1】:

我使用的解决方案是:

select id from NEW TABLE (insert into (val1, val2, ...) values ('lorem', 'ipsum', ...))

这会从插入数据库的最后一行获取 id 列:)

【讨论】:

有关此方法的更多信息,请参阅SELECT from INSERT statement 上的文档 悲剧。那个“SELECT from INSERT”文档要么改变了位置,要么变得不可用。 检查 DB2 SQL 编程指南中的选择插入的值部分。我的指南中的一个例子是SELECT EMPNO, HIRETYPE, HIREDATE FROM FINAL TABLE ( INSERT INTO EMPSAMP (NAME, SALARY, DEPTNO, LEVEL) VALUES('Mary Smith', 35000.00, 11, 'Associate')) Selecting values while inserting data【参考方案2】:
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()

更新:不要忘记使用以下标志创建preparedStatement Statement.RETURN_GENERATED_KEYS 否则它将不起作用)))

【讨论】:

嗯……甲骨文!= DB2 这是java而不是Oracle的教程 那么您根本没有解决 OP 的问题。【参考方案3】:

看看这个答案。

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

【讨论】:

【参考方案4】:
SELECT IDENTITY_VAL_LOCAL() AS VAL FROM SYSIBM.SYSDUMMY1

见docs。

【讨论】:

这个对我有用,但我需要使用 OpenQuery 来让它工作,因为我们将 DB2 设置为链接服务器。希望对其他人有所帮助

以上是关于如何从表中获取最后一个插入 ID的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 2 - 从表中获取最后插入的行

从表中获取最后一个 ID 号

获取最后一个插入 id sqlsrv

如何从表中检索我的最后一个插入行?

从表中获取最后 200 条记录 [关闭]

如何从表中获取数据并将其插入另一个表?