SQL คีย์ต่างประเทศ จำกัด
สำคัญต่างประเทศในหนึ่งจุดตารางคีย์หลักในตารางอื่น
ลองแสดงให้เห็นถึงต่างประเทศที่สำคัญด้วยตัวอย่าง มองไปที่สองตารางต่อไปนี้:
"Persons" ตาราง:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Orders" ตาราง:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
โปรดทราบว่า "P_Id" คอลัมน์ใน "Orders" จุดตารางกับ "P_Id" คอลัมน์ใน "Persons" ตาราง
"P_Id" คอลัมน์ใน "Persons" ตารางเป็นคีย์หลักใน "Persons" ตาราง
"P_Id" คอลัมน์ใน "Orders" ตารางสำคัญต่างประเทศใน "Orders" ตาราง
ข้อ จำกัด ที่สำคัญของต่างประเทศจะใช้เพื่อป้องกันการกระทำที่จะทำลายการเชื่อมโยงระหว่างตาราง
ข้อ จำกัด ที่สำคัญของต่างประเทศยังป้องกันไม่ให้ข้อมูลที่ไม่ถูกต้องจากการถูกแทรกลงในคอลัมน์คีย์ต่างประเทศเพราะมันจะต้องมีค่าใดค่าหนึ่งที่มีอยู่ในตารางจะชี้ไปที่
SQL คีย์ต่างประเทศข้อ จำกัด ในการสร้างตาราง
ต่อไปนี้ SQL สร้างสำคัญต่างประเทศใน "P_Id" คอลัมน์เมื่อ "Orders" ตารางสร้าง:
MySQL:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
เพื่ออนุญาตให้มีการตั้งชื่อของข้อ จำกัด ที่สำคัญต่างประเทศและสำหรับการกำหนดข้อ จำกัด คีย์ที่ต่างประเทศในหลายคอลัมน์ใช้ไวยากรณ์ SQL ต่อไปนี้:
MySQL / SQL Server / Oracle / MS Access:
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
SQL คีย์ต่างประเทศข้อ จำกัด เกี่ยวกับการเปลี่ยนแปลงตาราง
เพื่อสร้างข้อ จำกัด KEY ต่างประเทศใน "P_Id" คอลัมน์เมื่อ "Orders" ตารางจะถูกสร้างขึ้นแล้วใช้ SQL ต่อไปนี้:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
เพื่ออนุญาตให้มีการตั้งชื่อของข้อ จำกัด ที่สำคัญต่างประเทศและสำหรับการกำหนดข้อ จำกัด คีย์ที่ต่างประเทศในหลายคอลัมน์ใช้ไวยากรณ์ SQL ต่อไปนี้:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
จะลดลงข้อ จำกัด ที่สำคัญของต่างประเทศ
ที่จะลดข้อ จำกัด ที่สำคัญต่างประเทศใช้ SQL ต่อไปนี้:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders