唯一の実行可能な方法 これを行うには、INT IDENTITY
を使用します SQL Server データベースが提供するもの。これは信じてください - あなたは信じない 自分でやってみたい!
使うだけ
CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1), ...other columns...)
最初のテーブルに行を挿入すると、次のように ID 列の値を取得できます:
-- do the insert into the first table
INSERT INTO dbo.YourTableOne(Col1, Col2, ...., ColN)
VALUES (Val1, Val2, ...., ValN)
DECLARE @NewID INT
-- get the newly inserted ID for future use
SELECT @NewID = SCOPE_IDENTITY()
-- insert into the second table, use first table's new ID for your FK column
INSERT INTO dbo.YourTableTwo (FKColumn, ......) VALUES(@NewID, ......)
更新: 最初のテーブルに複数の行を挿入し、生成された複数の ID
を取得する必要がある場合 値、OUTPUT
を使用 節:
-- declare a table variable to hold the data
DECLARE @InsertedData TABLE (NewID INT, ...some other columns as needed......)
-- do the insert into the first table
INSERT INTO dbo.YourTableOne(Col1, Col2, ...., ColN)
OUTPUT Inserted.ID, Inserted.Col1, ..., Inserted.ColN INTO @InsertedData(NewID, Col1, ..., ColN)
VALUES (Val1, Val2, ...., ValN)
そしてそこから行きます。新しく挿入された行から任意の値を一時テーブル変数に取得できます。これにより、2 番目のテーブルのどの行にどの新しい ID 値を使用するかを決定できます