获取最后插入的ID

4

如果我使用SQL Server CE,有没有办法获取最后插入的ID? 我有2个表,当创建新记录时,我想能够在第二个表中保存ID。

5个回答

13
SELECT @@IDENTITY

将检索SQL Server中最后一个自动生成的标识值。


5

我希望这个例子能够帮到您。

INSERT INTO jobs (job_desc,min_level,max_level) VALUES ('A new job', 25, 100);

SELECT job_id FROM jobs WHERE job_id = @@IDENTITY;

1

1
假设较高的id值总是较新的,那么怎么样呢:
SELECT TOP 1 id FROM your_table ORDER BY id DESC

或者:

SELECT MAX(id) FROM your_table

这并没有考虑到可能存在的并发问题。你正在引入一种竞争条件,希望你的 SELECT MAX(id) 在另一条记录被插入之前执行。我会选择 @@Identity,因为 SQL CE 不支持 SCOPE_IDENTITY() - Joel C
@@Identity假定选择在同一会话中运行。从OP中并不清楚是否是这种情况,因此我认为这是根据给定信息更好的答案。 - Ash Burlaczenko

-1

这对我来说很好用

SELECT TOP (1) your_id FROM your_table ORDER BY your_id DESC

这可能有效,但比批准的答案慢得多。 - Gene S
此外,我认为这不会考虑到可能存在的并发问题,就像Brissles答案中第一个评论所述的那样。 - VoidKing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接