获取最后插入的ID

问题描述:

如果我使用SQL Server CE,有什么办法可以获得最后插入的ID吗?我有2个表格,当创建一个新记录时,我希望能够将ID保存在第二个表格中。获取最后插入的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 
+0

这并不占可能并发问题工作得很好。你正在引入一个竞争条件,希望你的'SELECT MAX(id)'在另一个记录被插入之前执行。因为SQL CE中不支持'SCOPE_IDENTITY()',所以我会使用'@@ Identity'。 – 2012-01-17 20:12:25

+0

@@ Identity假定select在同一个会话中运行。 OP的情况并不清楚,所以我认为这是给出信息的更好答案。 – 2012-01-18 16:29:47

这对我

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