我使用以下查询将多个记录插入到表中:
INSERT INTO Table1(FirstName, LastName, EmailAddress) SELECT t2.FirstName, t2.LastName, t2.EmailAddress FROM Table2 t2
由于查询要插入多个记录,因此无法使用 SCOPE_IDENTITY 来检索PK。有什么方法可以获取最近插入记录的ID?
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