Jediná schůdná cesta k tomu použijte INT IDENTITY
které databáze SQL Server nabízí. V tomto mi věřte – ne chcete to zkusit udělat sami!
Stačí použít
CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1), ...other columns...)
a hotovo.
Jakmile vložíte řádek do své první tabulky, můžete získat hodnotu sloupce identity takto:
-- 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, ......)
Aktualizace: pokud potřebujete vložit více řádků do první tabulky a zachytit více vygenerovaných ID
hodnoty, použijte OUTPUT
klauzule:
-- 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)
a pak odtamtud. Do dočasné proměnné tabulky můžete získat libovolné hodnoty z nově vložených řádků, což vám umožní rozhodnout, které nové hodnoty ID použít pro které řádky pro vaši druhou tabulku