0

考虑以下 TSQL:

INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
    FROM Contact

地址有一个自动设置的标识列。有没有办法获取新插入的地址记录的身份列表?

我知道有@@IDENTITY,但这只是返回最后一个身份。

4

1 回答 1

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()也更安全。有关更多背景信息,请参阅此答案

于 2012-07-05T17:33:57.383 回答