Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Различни начини за генериране на най-новия int тип първичен външен ключ в кода

Единственият жизнеспособен начин за да направите това е да използвате INT IDENTITY които базата данни на SQL Server предлага. Доверете ми се за това - вие не искате да опитате да направите това сами!

Просто използвайте

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

и приключете с него.

След като вмъкнете ред в първата си таблица, можете да извлечете стойността на колоната за идентичност по този начин:

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

Актуализация: ако трябва да вмъкнете множество редове в първата таблица и да заснемете множество генерирани ID стойности, използвайте OUTPUT клауза:

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

и след това отидете от там. Можете да получите всякакви стойности от нововмъкнатите редове във временната променлива на таблицата, която след това ще ви позволи да решите кои нови стойности на ID да използвате за кои редове за вашата втора таблица



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server FOR XML Path прави повтарящи се възли

  2. Как да видя SQL заявка в SQL Profiler?

  3. Въведение в потребителски дефинирани функции в SQL Server

  4. SP отнема 15 минути, но същата заявка, когато се изпълни, връща резултати за 1-2 минути

  5. SQL Server 2005 Пивот върху неизвестен брой колони