在SQL Server 2008中获取多个插入的身份标识

7

你好
我将使用SQL Server 2008中可用的一个TSQL一次性插入10行数据。我想要插入行的IDENTITY。我认为下面的解决方案会起作用,但如果在运行前一个插入时发生其他插入,是否会影响结果我不确定。

INSERT INTO tableA VALUES (1,2), (3,4), (4,5), ....
DECLARE @LastID INT = @@IDENTITY
SELECT TOP(10) ID FROM tableA WHERE ID<=@LastID ORDER BY ID DESC

2个回答

19
你可以使用 OUTPUT 子句:
DECLARE @tablevar table (ID int);

INSERT INTO tableA 
OUTPUT INSERTED.ID INTO @tablevar 
VALUES (1,2), (3,4), (4,5), ....

很棒的答案,正是我需要的,但是否有可能避免使用临时表? - Ehsan
2
@Ehsan - 只需省略 INTO @MyTableVar 部分。 - Damien_The_Unbeliever
2
@Ehsan:我可以建议您接受Damien的答案。 - Mitch Wheat

16

只需使用OUTPUT子句 - 它可以将输出返回到应用程序中,或者返回到表变量以进行进一步处理。

例如,您的查询将如下所示:

INSERT INTO tableA
OUTPUT inserted.ID
VALUES (1,2), (3,4), (4,5), ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接