.net 如果使用多个insert语句,有没有办法使用SCOPE_IDENTITY?

kxe2p93d  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(141)

我将从csv文件导入到SQL Server数据库中的许多数据行(通过Web应用程序)。我需要为客户端自动生成的ID值。
如果我在循环中这样做,性能会非常糟糕(但我可以使用SCOPE_IDENTITY(),没有任何问题)。
更高性能的解决方案是这样的方法:

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

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

yhxst69z

yhxst69z1#

不,SCOPE_IDENTITY()只给你一个,最新的插入的IDENTITY值。但是你可以check out the OUTPUT clause of 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值。

相关问题