一尘不染

获取最后插入的记录的ID

sql

我使用以下查询将多个记录插入到表中:

INSERT INTO Table1(FirstName, LastName, EmailAddress)
    SELECT t2.FirstName, t2.LastName, t2.EmailAddress
    FROM Table2 t2

由于查询要插入多个记录,因此无法使用 SCOPE_IDENTITY 来检索PK。有什么方法可以获取最近插入记录的ID?


阅读 146

收藏
2021-03-10

共1个答案

一尘不染

SCOPE_IDENTITY()将正确为您提供LAST ID。您需要将其与@@ Rowcount结合使用,以提供ID范围。
正如其他Richard指出的那样
,这仅在您将增量设置为1时有效

例如:

declare @last int, @first int
insert ...
select @last = scope_identity(), @first = scope_identity() - @@rowcount + 1

执行此操作的另一种方法 (在SQL Server 2008中使用此方法以获得保证的结果)
是使用OUTPUT子句

declare @ids table (id int)
INSERT INTO Table1 (FirstName ,LastName ,EmailAddress)
output inserted.id into @ids

-- Get the ids
SELECT id from @Ids

该表现在包含所有插入的ID

2021-03-10