Giới hạn FOREIGN KEY trong SQL

Giới hạn FOREIGN KEY trong SQL

FOREIGN KEY trong một bảng chỉ tới PRIMARY KEY của bảng khác.

Hãy cùng xem một ví dụ để giải thích FOREIGN KEY. Dưới đây là hai bảng:

Bảng "Persons":

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Bảng "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Lưu ý rằng cột "Id_P" trong "Orders" chỉ tới cột "Id_P" trong bảng "Persons".

Cột "Id_P" trong bảng "Persons" là PRIMARY KEY của bảng "Persons".

Cột "Id_P" trong bảng "Orders" là FOREIGN KEY của bảng "Orders".

FOREIGN KEY Constraint được sử dụng để ngăn chặn các hành động phá hủy kết nối giữa các bảng.

FOREIGN KEY Constraint cũng có thể ngăn chặn việc chèn dữ liệu bất hợp pháp vào cột ngoại khóa, vì nó phải là một trong các giá trị của bảng mà nó đang chỉ tới.

FOREIGN KEY Constraint trên CREATE TABLE

Dưới đây là SQL để tạo FOREIGN KEY cho cột "Id_P" khi bảng "Orders" được tạo:

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

Nếu cần đặt tên cho ràng buộc FOREIGN KEY và định nghĩa ràng buộc FOREIGN KEY cho nhiều cột, hãy sử dụng cú pháp SQL sau:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

Ràng buộc FOREIGN KEY trong ALTER TABLE SQL

Nếu cần tạo ràng buộc FOREIGN KEY cho cột "Id_P" khi bảng "Orders" đã tồn tại, hãy sử dụng SQL sau:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

Nếu cần đặt tên cho ràng buộc FOREIGN KEY và định nghĩa ràng buộc FOREIGN KEY cho nhiều cột, hãy sử dụng cú pháp SQL sau:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

Hủy bỏ ràng buộc FOREIGN KEY

Nếu cần hủy bỏ ràng buộc FOREIGN KEY, hãy sử dụng SQL sau:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders