Tình huống:
Bạn đã tạo hai bảng dbo.Customer và dbo.Orders. Khóa chính được tạo trên cột CustomerId trong bảng dbo.Customer.USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) )
CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT )
Bạn cần thay đổi bảng dbo.Orders và thêm ràng buộc khóa ngoại cho CustomerId từ dbo.Customer.
Giải pháp:
Vì các bảng đã có sẵn, tập lệnh dưới đây có thể được sử dụng để thay đổi bảng dbo.Orders và thêm ràng buộc Khoá ngoại.Nếu cột đã tồn tại trong bảng thứ hai mà bạn muốn tạo Ràng buộc khoá ngoại, bạn sẽ tốt để chạy tập lệnh dưới đây. Vì chúng tôi không có cột trong bảng, trước tiên chúng tôi sẽ thêm cột CustomerId trong bảng dbo.Orders. Cột Tên không nhất thiết phải khớp với cột đầu tiên trong bảng trong trường hợp của chúng tôi là dbo.Customer.CustomerId
--Add new column to Table in case you don't have Alter table dbo.Orders Add CustomerId int --Add Foreign Key Constraint on Existing Table Alter table dbo.Orders Add Constraint Fk_CustomerId Foreign Key(CustomerId) References dbo.Customer(CustomerId)
Tạo Ràng buộc Khoá Ngoại trên các Cột Tổng hợp Tập lệnh dưới đây có thể được sử dụng để tạo Ràng buộc khóa ngoại cho các cột tổng hợp.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT Identity(1,1) ,FName VARCHAR(100) Not Null ,LName VARCHAR(100) ,SSN VARCHAR(10) Not Null, Constraint Pk_FName_SSN Primary Key (FName,SSN) ) CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT ,FirstName VARCHAR(100), SSN VARCHAR(10) Not Null )
Các cột đã tồn tại trong cả hai bảng nên chúng tôi không phải thêm cột vào bảng thứ hai. Chúng ta chỉ cần tạo Hệ thống khóa ngoại. Tập lệnh dưới đây có thể được sử dụng để tạo Ràng buộc khóa ngoại cho các cột tổng hợp.
Alter table dbo.Orders Add Constraint Fk_Order_Customer_FName_SSN FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
Bạn sẽ viết cú pháp cho bảng của mình
Thay thế bảng dbo.YourTableNameAdd Constraint Constraint_NameForeign Key (Column1FromYourTableName, Column2FromYourTable) Tham chiếu dbo.YourFirstTable (Column1FromPrimaryKey, Column2FromPrimaryKey)
Demo:Cách thêm Ràng buộc khóa ngoại vào Bảng hiện có trong SQL Server