获取上次插入记录的ID

时间:2011-03-16 09:52:12

标签: sql sql-server-2008

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

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

由于查询插入了多条记录,我无法使用 SCOPE_IDENTITY 来检索PK。有没有方法可以获取最后插入记录的ID?

2 个答案:

答案 0 :(得分:13)

SCOPE_IDENTITY()会正确地为您提供最后一个ID。您需要的是将它与@@ Rowcount结合使用,为您提供ID范围。 正如其他理查德指出 一样,只有在您的增量设置为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

答案 1 :(得分:0)

SCOPE_IDENTITY的文档还列出了@@IDENTITYIDENT_SCOPE所有关于范围和会话的详细信息 - 返回单个标识符。

解决方案:添加一行并获取其身份,然后插入下一行....