如果使用多插入语句,有什么方法可以使用SCOPE_IDENTITY



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

如果我循环这样做,性能非常糟糕(但我可以使用SCOPE_IDENTITY()没有任何问题)。

性能更高的解决方案是这样的:

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

有没有办法获取所有生成的ID,而不仅仅是最后生成的ID?

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

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

运行 INSERT 语句后,table 变量将保存"某个键值"(对您来说,用于标识行)和新插入的ID插入的每一行的值。现在疯狂吧!:-)

相关内容

最新更新