我将从csv文件导入到SQL Server数据库中的许多数据行(通过Web应用程序)。我需要为客户端自动生成的ID值。如果我在循环中这样做,性能会非常糟糕(但我可以使用SCOPE_IDENTITY(),没有任何问题)。更高性能的解决方案是这样的方法:
SCOPE_IDENTITY()
INSERT INTO [MyTable] VALUES ('1'), ('2'), ('3') SELECT SCOPE_IDENTITY()
有没有办法获得所有生成的ID,而不仅仅是最后生成的ID?
yhxst69z1#
不,SCOPE_IDENTITY()只给你一个,最新的插入的IDENTITY值。但是你可以check out the OUTPUT clause of SQL Server ....
IDENTITY
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语句,表变量将保存“某个键值”(用于标识行)和新插入的每一行的ID值。
INSERT
ID
1条答案
按热度按时间yhxst69z1#
不,
SCOPE_IDENTITY()
只给你一个,最新的插入的IDENTITY
值。但是你可以check out theOUTPUT
clause of SQL Server ....一旦运行了
INSERT
语句,表变量将保存“某个键值”(用于标识行)和新插入的每一行的ID
值。