SQL-Server常见问题 - 检索刚刚插入的ID

Tom*_*len 2 sql sql-server

我看了一些其他问题,它们似乎与SQL-Server无关.

给出简单的示例查询:

INSERT INTO tblComments (comment, user) VALUES ('lol', 'Guest')
Run Code Online (Sandbox Code Playgroud)

现在假设在创建新用户之后我需要在需要最后输入ID的其他表中插入更多数据,我会这样做:

SELECT TOP 1 ID FROM tblComments ORDER BY ID DESC
Run Code Online (Sandbox Code Playgroud)

要检索最后输入的ID,(希望)在此期间没有执行任何查询,并且返回的ID确实是前一个查询的值.

我确实保持我的表规范化,但是我有时遇到插入值可能不一定是唯一的情况,那么如何保证返回的ID是最后一个插入的?

Red*_*ter 6

您的方法受到竞争条件的影响.

相反,使用SCOPE_IDENTITY:

select scope_identity()
Run Code Online (Sandbox Code Playgroud)