0

次の TSQL を考慮します。

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

Address には、自動的に設定される ID 列があります。新しく挿入された Address レコードの ID のリストを取得する方法はありますか?

@@IDENTITY があることは知っていますが、それは最後の ID を返すだけです。

4

1 に答える 1

0

ID 列が 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 に答える