访问 SQL 中最近添加的行的 ID
将新数据插入数据库表后,您经常需要检索新行自动生成的 ID。本文展示了获取此 ID 的几种 SQL 方法,从而避免了对临时表的需要。
SCOPE_IDENTITY()
对于将 INT
或 BIGINT
列设置为标识列的表,SCOPE_IDENTITY()
可有效检索 INSERT
语句后的 ID。 方法如下:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT SCOPE_IDENTITY()</code>
这将返回当前范围内最近插入的身份值(可能受到嵌套事务的影响)。
@@IDENTITY
@@IDENTITY
是一个全局变量,保存最后分配的标识值。 像这样使用它:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT @@IDENTITY</code>
但是,@@IDENTITY
反映了所有范围内的最后一个身份值,可能包括嵌套事务中较早的插入。 如果同一会话中发生多次插入,这可能会给出不正确的结果。
IDENT_CURRENT()
IDENT_CURRENT()
提供了另一种选择。它检索特定表的标识值,无论范围或事务如何:
<code class="language-sql">INSERT INTO dbo.YourTable(columns....) VALUES(..........) SELECT IDENT_CURRENT('dbo.YourTable')</code>
IDENT_CURRENT()
保证 ID 来自指定的表,即使在嵌套事务中进行多次插入也是如此。
总结
数据库开发人员需要了解这些不同的方法来检索最后插入的行 ID。根据您的表结构和操作上下文选择正确的方法,可确保准确的 ID 检索并保持数据完整性。
以上是如何在 SQL 中检索最后插入的行 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!