Theo thuật ngữ cơ sở dữ liệu, khóa ngoại là cột được liên kết với trường khóa chính của bảng khác trong mối quan hệ giữa hai bảng.
Khóa ngoại là một loại ràng buộc và vì vậy nếu bạn muốn tạo khóa ngoại trong SQL Server, bạn sẽ cần tạo một ràng buộc khóa ngoài.
Bài viết này trình bày cách tạo ràng buộc khóa ngoại trong SQL Server, sử dụng Transact-SQL.
Ví dụ
Cách dễ nhất để chứng minh điều này là với một ví dụ. Trong ví dụ này, chúng tôi sử dụng T-SQL để tạo ràng buộc khóa ngoại bằng cách sử dụng ALTER TABLE
tuyên bố:
USE Music; ALTER TABLE Albums ADD CONSTRAINT FK_Albums_Artists FOREIGN KEY (ArtistId) REFERENCES dbo.Artists (ArtistId) ON DELETE CASCADE ON UPDATE CASCADE ; GO
Điều này tạo ra mối quan hệ giữa hai bảng (Albums
bảng và Artists)
bàn). Chúng tôi thực hiện việc này bằng cách tạo ràng buộc khóa ngoại trên Albums
bàn. Chúng tôi chỉ định rằng Albums.ArtistId
là một khóa ngoại đối với Artists.ArtistId
cột.
Điều này rõ ràng giả định rằng hai bảng tồn tại. Nếu không, chúng tôi sẽ gặp lỗi.
Chúng tôi cũng sử dụng GO
mà thực sự không phải là một phần của T-SQL. Nó được các tiện ích khác nhau công nhận để báo hiệu sự kết thúc của một loạt câu lệnh T-SQL.
Kiểm tra kết quả
Bạn có thể kiểm tra kết quả bằng cách chạy tập lệnh sau:
USE Music; SELECT name, type_desc, delete_referential_action_desc, update_referential_action_desc FROM sys.foreign_keys; GO
Phần này liệt kê các khóa ngoại trong Music
cơ sở dữ liệu. Thay đổi tên của cơ sở dữ liệu cho phù hợp.
Nếu cơ sở dữ liệu của bạn có quá nhiều khóa ngoại, bạn luôn có thể thu hẹp nó bằng WHERE
mệnh đề cho khóa ngoại cụ thể mà bạn quan tâm. Bạn cũng có thể sử dụng ký tự đại diện (*
) nếu bạn cần trả lại tất cả các cột.