考虑以下 TSQL:
INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
FROM Contact
地址有一个自动设置的标识列。有没有办法获取新插入的地址记录的身份列表?
我知道有@@IDENTITY,但这只是返回最后一个身份。
考虑以下 TSQL:
INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
FROM Contact
地址有一个自动设置的标识列。有没有办法获取新插入的地址记录的身份列表?
我知道有@@IDENTITY,但这只是返回最后一个身份。
假设标识列称为 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()
也更安全。有关更多背景信息,请参阅此答案。