有没有什么办法,如果使用多个insert语句使用SCOPE_IDENTITY?(Is there a

2019-08-02 18:38发布

我将(通过一个Web应用程序)导入从CSV文件导入到SQL Server数据库中的许多数据行。 我需要自动生成的值id回客户端。

如果我这样做在一个循环中,表现很不好(但我可以使用SCOPE_IDENTITY()没有任何问题)。

更高性能的解决方案会是这样一种方式:

INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()

有没有办法让所有生成的ID,而不是只有最后生成的ID?

谢谢你的帮助!

最好的问候,托尔斯滕

Answer 1:

不, SCOPE_IDENTITY()只给你一个,最新的插入IDENTITY值。 但是你可以检查出的OUTPUT的SQL Server的条款 ....

DECLARE @IdentityTable TABLE (SomeKeyValue INT, NewIdentity INT)

INSERT INTO [MyTable]
OUTPUT Inserted.Keyvalue, Inserted.ID INTO @IdentityTable(SomeKeyValue, NewIdentity)
VALUES ('1'), ('2'), ('3')

一旦你运行你的INSERT语句中,表变量将举行“一些键值”(你,找出行)和新插入的ID值插入每一行。 现在疯狂地使用这个! :-)



文章来源: Is there any way to use SCOPE_IDENTITY if using a multiple insert statement?