Giới hạn FOREIGN KEY trong SQL
- Trang trước Chìa khóa chính SQL
- Trang tiếp theo Kiểm tra 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
- Trang trước Chìa khóa chính SQL
- Trang tiếp theo Kiểm tra SQL