Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Różne sposoby generowania w kodzie najnowszego podstawowego klucza obcego typu int

jedyny realny sposób w tym celu należy użyć INT IDENTITY oferowane przez bazę danych SQL Server. Zaufaj mi w tej kwestii – nie chcesz spróbować zrobić to sam!

Wystarczy użyć

CREATE TABLE dbo.YourTableOne(ID INT IDENTITY(1,1),  ...other columns...)

i skończ z tym.

Po wstawieniu wiersza do pierwszej tabeli możesz pobrać wartość kolumny tożsamości w następujący sposób:

-- 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, ......)

Aktualizacja: jeśli potrzebujesz wstawić wiele wierszy do pierwszej tabeli i przechwycić wiele wygenerowanych ID wartości, użyj OUTPUT klauzula:

-- 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 następnie idź stamtąd. Możesz pobrać dowolne wartości z nowo wstawionych wierszy do tymczasowej zmiennej tabeli, co pozwoli ci zdecydować, których nowych wartości identyfikatorów użyć dla których wierszy w drugiej tabeli



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zapętlić i przeanalizować parametr xml w procedurze składowanej serwera sql?

  2. zapytanie sql - pobierz wszystkie rekordy na podstawie flagi

  3. Kiedy używać operatora tabeli APLIKUJ

  4. SQL Server:Dwupoziomowe GROUP BY z wyjściem XML

  5. Policz liczbę użytkowników w określonym przedziale wiekowym na podstawie daty urodzenia