如何使用ODBC连接从数据库获取最后插入的ID?
我正在寻找类似于mysql_insert_id()函数的解决方案。
选择 @@IDENTITY 作为 ID
在MySQL中使用
SELECT *
FROM table_name
ORDER BY Id Desc
LIMIT 1
在 SQL Server 中使用
SELECT top 1 *
FROM table_name
ORDER BY Id Desc
"SELECT LAST_INSERT_ID( );"
在执行INSERT查询之后,必须立即执行它。
对于其他数据库,请使用其他特定的查询...
在使用 PHP/MSSQL 时,通过 ODBC 我使用了 "SELECT @@IDENTITY AS LastID",这在 SQL 2005 服务器(或者是 2000?)下会带来一些问题。无论哪种情况,如果你按照以下方式操作:
SET NOCOUNT ON
[NOW INSERT YOUR INSERT SQL QUERY]
SELECT @@IDENTITY AS LastID
在任何的 MSSQL 服务器版本下都应该可以正常工作。
"SET NOCOUNT ON" 将防止 SQL Server 发送诸如 "1 行已插入" 的消息,这将使您的脚本正常工作。
这取决于数据库类型,但是请查看您的关系型数据库管理系统中的SEQUENCE语法。
SELECT id FROM mytable WHERE rowid = '$myuniqueid'
这样做可以确保从数据库中检索到正确的ID,比使用MAX(id)更好的解决方案。
SELECT max(id) FROM table;
在事务内部应该没问题,或者ODBC不支持事务吗?