获取最后插入的ID
答
我希望这个例子可以帮助你。
INSERT INTO jobs (job_desc,min_level,max_level) VALUES ('A new job', 25, 100);
SELECT job_id FROM jobs WHERE job_id = @@IDENTITY;
答
使用此查询:
INSERT INTO Persons (FirstName) VALUES ('Joe');
SELECT ID AS LastID FROM Persons WHERE ID = @@Identity;
,或者你可以查看这个链接的详细信息: http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/
答
SELECT @@IDENTITY
将检索SQL Server中的最后自动生成的标识值。
答
假设id
较高的值总是新的,怎么样:
SELECT TOP 1 id FROM your_table ORDER BY id DESC
或:
SELECT MAX(id) FROM your_table
答
这对我
SELECT TOP (1) your_id FROM your_table ORDER BY your_id DESC
+0
这可能有效,但比批准的答案慢得多。 – 2012-10-10 20:34:07
+0
另外,我认为这不会解决可能出现的并发问题,就像Brissles的回答中的第一个评论中所述的那样。 – VoidKing 2013-10-30 14:03:58
这并不占可能并发问题工作得很好。你正在引入一个竞争条件,希望你的'SELECT MAX(id)'在另一个记录被插入之前执行。因为SQL CE中不支持'SCOPE_IDENTITY()',所以我会使用'@@ Identity'。 – 2012-01-17 20:12:25
@@ Identity假定select在同一个会话中运行。 OP的情况并不清楚,所以我认为这是给出信息的更好答案。 – 2012-01-18 16:29:47