Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các cách khác nhau để tạo khóa ngoại chính kiểu int mới nhất trong mã

Cách khả thi duy nhất để làm điều này là sử dụng INT IDENTITY mà cơ sở dữ liệu SQL Server cung cấp. Hãy tin tôi vào điều này - bạn đừng muốn tự mình làm điều này!

Chỉ cần sử dụng

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

và được thực hiện với nó.

Khi bạn chèn một hàng vào bảng đầu tiên của mình, bạn có thể truy xuất giá trị của cột nhận dạng như sau:

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

Cập nhật: nếu bạn cần chèn nhiều hàng vào bảng đầu tiên và nắm bắt nhiều ID đã tạo , sử dụng OUTPUT mệnh đề:

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

và sau đó đi từ đó. Bạn có thể nhận bất kỳ giá trị nào từ các hàng mới được chèn vào biến bảng tạm thời, sau đó sẽ cho phép bạn quyết định giá trị ID mới nào sẽ sử dụng cho hàng nào cho bảng thứ hai của bạn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để loại bỏ ràng buộc khóa ngoại chỉ khi nó tồn tại trong máy chủ sql?

  2. tsql lần xuất hiện cuối cùng bên trong một chuỗi

  3. Lặp qua một bảng bằng Áp dụng chéo và ĐOÀN KẾT TẤT CẢ các kết quả

  4. Lỗi xác thực Web.config

  5. Làm cách nào để lấy đường dẫn sao lưu mặc định cho SQL Server 2008 Express R2 lập trình bằng C #?