如果使用多个insert语句,有没有办法使用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
语句后,表变量将保存“某些键值”(为此,标识行)以及插入的每行的新插入的ID
值。 现在对此疯狂! 🙂