次の TSQL を考慮します。
INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
FROM Contact
Address には、自動的に設定される ID 列があります。新しく挿入された Address レコードの ID のリストを取得する方法はありますか?
@@IDENTITY があることは知っていますが、それは最後の ID を返すだけです。
次の TSQL を考慮します。
INSERT INTO Address(Street1, City, State, ZipCode)
SELECT Street1, City, StateCode, ZipCode
FROM Contact
Address には、自動的に設定される ID 列があります。新しく挿入された Address レコードの ID のリストを取得する方法はありますか?
@@IDENTITY があることは知っていますが、それは最後の ID を返すだけです。
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()