考虑以下TSQL:
INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
FROM Contact
地址具有自动设置的标识列。有没有办法获得新插入的地址记录的身份列表?
我知道有@@ IDENTITY,但这只会返回最后一个身份。
答案 0 :(得分:0)
假设标识列名为AddressID,您可以:
INSERT INTO dbo.Address(Street1, ...)
OUTPUT inserted.AddressID
SELECT Street1, ...
FROM dbo.Contact;
或者:
DECLARE @NewAddresses TABLE(AddressID INT);
INSERT INTO dbo.Address(Street1, ...)
OUTPUT inserted.AddressID INTO @NewAddresses
SELECT Street1, ...
FROM dbo.Contact;
请注意@@IDENTITY
几乎永远不会被使用。即使在处理单行插入时,SCOPE_IDENTITY()
也更安全。有关更多背景信息,请参阅this answer。