أحدث البرامج التعليمية وتطوير الشبكة
 

SQL قيد مفتاح خارجي


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