De enige manier om dit te doen, gebruik je INT IDENTITY
die de SQL Server-database biedt. Geloof me in deze - jij niet wil je dit zelf proberen!
Gebruik gewoon
CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1), ...other columns...)
en klaar ermee.
Nadat u een rij in uw eerste tabel heeft ingevoegd, kunt u de waarde van de identiteitskolom als volgt ophalen:
-- 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, ......)
Bijwerken: als u meerdere rijen in de eerste tabel moet invoegen en meerdere gegenereerde ID
. moet vastleggen waarden, gebruik de OUTPUT
clausule:
-- 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)
en ga dan vanaf daar. U kunt alle waarden van de nieuw ingevoegde rijen in de tijdelijke tabelvariabele krijgen, zodat u kunt beslissen welke nieuwe ID-waarden u voor welke rijen voor uw tweede tabel wilt gebruiken