Ràng buộc khóa ngoại trong SQL
Ràng buộc khóa ngoại trong SQL
Ràng buộc FOREIGN KEY
được sử dụng để ngăn chặn các hành động phá hủy liên kết giữa các bảng.
FOREIGN KEY
là một trường (hoặc tập hợp các trường) trong một bảng, tham chiếu đến PRIMARY KEY
trong một bảng khác.
Bảng có khóa ngoại được gọi là bảng con và bảng có khóa chính được gọi là bảng tham chiếu hoặc bảng cha.
Nhìn vào hai bảng sau:
Bảng người
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Bảng đơn hàng
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Lưu ý rằng cột "PersonID" trong bảng "Đơn hàng" trỏ đến cột "PersonID" trong bảng "Người".
Cột "PersonID" trong bảng "Người" là PRIMARY KEY
trong bảng "Người".
Cột "PersonID" trong bảng "Đơn hàng" là FOREIGN KEY
trong bảng "Đơn hàng".
Ràng buộc FOREIGN KEY
ngăn không cho dữ liệu không hợp lệ được chèn vào cột khóa ngoại, vì nó phải là một trong các giá trị có trong bảng cha.
KHÓA NGOẠI TỆ SQL trên TẠO BẢNG
SQL sau đây tạo FOREIGN KEY
trên cột "PersonID" khi bảng "Đơn hàng" được tạo:
MySQL:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Máy chủ SQL/Oracle/MS truy cập:
CREATE TABLE Orders
(
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
Để cho phép đặt tên cho ràng buộc FOREIGN KEY
và để xác định ràng buộc FOREIGN KEY
trên nhiều cột, hãy sử dụng cú pháp SQL sau:
Truy cập MySQL / SQL Server / Oracle / MS:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
KHÓA NGOẠI TỆ SQL trên BẢNG ALTER
Để tạo ràng buộc FOREIGN KEY
trên cột "PersonID" khi bảng "Đơn hàng" đã được tạo, hãy sử dụng SQL sau:
Truy cập MySQL / SQL Server / Oracle / MS:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Để cho phép đặt tên cho ràng buộc FOREIGN KEY
và để xác định ràng buộc FOREIGN KEY
trên nhiều cột, hãy sử dụng cú pháp SQL sau:
Truy cập MySQL / SQL Server / Oracle / MS:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
BỎ Ràng buộc FORIGN KEY
Để loại bỏ ràng buộc FOREIGN KEY
, hãy sử dụng SQL sau:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;
Máy chủ SQL/Oracle/MS truy cập:
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;