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" الجدول.
يتم استخدام قيد FOREIGN KEY لمنع الإجراءات التي من شأنها أن تدمر العلاقات بين الجداول.
كما يمنع قيد FOREIGN KEY بيانات غير صالحة من يتم إدراجها في عمود المفتاح الخارجي، لأنها قد تكون واحدة من القيم الواردة في الجدول يشير إلى.
SQL الخارجية مفتاح القيد في الجدول CREATE
و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)
)
للسماح بتسمية قيد FOREIGN KEY، ولتحديد قيد FOREIGN KEY على أعمدة متعددة، استخدم بناء الجملة 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 الخارجية العائق الرئيسي في ALTER TABLE
لإنشاء قيد المفتاح الخارجي على "P_Id" عمود عندما "Orders" يتم إنشاء الجدول بالفعل، استخدم SQL التالية:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
للسماح بتسمية قيد FOREIGN KEY، ولتحديد قيد FOREIGN KEY على أعمدة متعددة، استخدم بناء الجملة SQL التالية:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
إلى إسقاط قيد مفتاح خارجي
إسقاط قيد FOREIGN KEY، استخدم SQL التالية:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders