我将(通过一个Web应用程序)导入从CSV文件导入到SQL Server数据库中的许多数据行。 我需要自动生成的值id回客户端。
如果我这样做在一个循环中,表现很不好(但我可以使用SCOPE_IDENTITY()
没有任何问题)。
更高性能的解决方案会是这样一种方式:
INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()
有没有办法让所有生成的ID,而不是只有最后生成的ID?
谢谢你的帮助!
最好的问候,托尔斯滕
不, 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?