Nav*_*hat 6 sql sql-server-2008
我正在使用以下查询将多个记录插入到表中:
INSERT INTO Table1(FirstName, LastName, EmailAddress)
SELECT t2.FirstName, t2.LastName, t2.EmailAddress
FROM Table2 t2
Run Code Online (Sandbox Code Playgroud)
由于查询是插入多个记录,我不能使用SCOPE_IDENTITY来检索PK.是否有任何方法可以获取最后插入记录的ID?
Ric*_*iwi 13
SCOPE_IDENTITY()将正确地为您提供最后的ID.您需要的是将它与@@ Rowcount结合使用,为您提供ID范围.正如其他理查德所指出的那样,这只有在你的增量设置为1时才有效
例如:
declare @last int, @first int
insert ...
select @last = scope_identity(), @first = scope_identity() - @@rowcount + 1
Run Code Online (Sandbox Code Playgroud)
另一种方法(在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
Run Code Online (Sandbox Code Playgroud)
该表现在包含所有插入的ID