satu-satunya cara yang layak untuk melakukan ini adalah dengan menggunakan INT IDENTITY
yang ditawarkan oleh database SQL Server. Percayalah pada saya yang satu ini - Anda tidak ingin mencoba melakukannya sendiri!
Cukup gunakan
CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1), ...other columns...)
dan selesaikan.
Setelah Anda memasukkan baris ke tabel pertama Anda, Anda dapat mengambil nilai kolom identitas seperti ini:
-- 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, ......)
Pembaruan: jika Anda perlu memasukkan beberapa baris ke dalam tabel pertama dan menangkap beberapa ID
nilai, gunakan OUTPUT
klausa:
-- 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)
dan kemudian pergi dari sana. Anda bisa mendapatkan nilai apa pun dari baris yang baru dimasukkan ke dalam variabel tabel sementara, yang kemudian memungkinkan Anda memutuskan nilai ID baru mana yang akan digunakan untuk baris mana untuk tabel kedua Anda