如何从表中获取最后一个插入 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的主要内容,如果未能解决你的问题,请参考以下文章