sql >> Databáze >  >> RDS >> Sqlserver

Různé způsoby generování nejnovějšího primárního cizího klíče typu int v kódu

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



  1. Jak oddělit (rozdělit) řetězec čárkou v uložené proceduře SQL Server

  2. Načtěte pole Javascript s daty databáze MYSQL

  3. Přeskočit znaky ve funkci Oracle TO_DATE

  4. Co je @@TEXTSIZE na serveru SQL?