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.