ข้อจำกัดของคีย์ต่างประเทศของ MySQL
ข้อจำกัดของคีย์ต่างประเทศของ MySQL
ข้อFOREIGN KEY
จำกัดนี้ใช้เพื่อป้องกันการกระทำที่จะทำลายการเชื่อมโยงระหว่างตาราง
A FOREIGN KEY
คือเขตข้อมูล (หรือคอลเลกชันของเขตข้อมูล) ในตารางหนึ่ง ซึ่งอ้างอิงถึงPRIMARY KEY
อีกตารางหนึ่ง
ตารางที่มีคีย์นอกเรียกว่าตารางย่อยและตารางที่มีคีย์หลักจะเรียกว่าตารางที่อ้างอิงหรือตารางพาเรนต์
ดูสองตารางต่อไปนี้:
ตารางบุคคล
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
ตารางการสั่งซื้อ
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
โปรดสังเกตว่าคอลัมน์ "PersonID" ในตาราง "Orders" ชี้ไปที่คอลัมน์ "PersonID" ในตาราง "Persons"
คอลัมน์ "PersonID" ในตาราง "Persons" อยู่PRIMARY KEY
ในตาราง "Persons"
คอลัมน์ "PersonID" ในตาราง "Orders" อยู่
FOREIGN KEY
ในตาราง "Orders"
ข้อFOREIGN KEY
จำกัดนี้ป้องกันข้อมูลที่ไม่ถูกต้องจากการถูกแทรกลงในคอลัมน์ foreign key เนื่องจากจะต้องเป็นหนึ่งในค่าที่มีอยู่ในตารางพาเรนต์
กุญแจต่างประเทศบน CREATE TABLE
SQL ต่อไปนี้สร้าง a FOREIGN KEY
ในคอลัมน์ "PersonID" เมื่อสร้างตาราง "Orders":
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
ในการอนุญาตการตั้งชื่อFOREIGN KEY
ข้อจำกัด และสำหรับการกำหนด
FOREIGN KEY
ข้อจำกัดในหลายคอลัมน์ ให้ใช้ไวยากรณ์ SQL ต่อไปนี้:
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)
);
คีย์ต่างประเทศใน ALTER TABLE
ในการสร้างFOREIGN KEY
ข้อจำกัดในคอลัมน์ "PersonID" เมื่อสร้างตาราง "Orders" แล้ว ให้ใช้ SQL ต่อไปนี้:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
ในการอนุญาตการตั้งชื่อFOREIGN KEY
ข้อจำกัด และสำหรับการกำหนด
FOREIGN KEY
ข้อจำกัดในหลายคอลัมน์ ให้ใช้ไวยากรณ์ SQL ต่อไปนี้:
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
วางข้อ จำกัด ที่สำคัญต่างประเทศ
หากต้องการยกเลิกFOREIGN KEY
ข้อจำกัด ให้ใช้ SQL ต่อไปนี้:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;