قيود 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" في جدول "الطلبات" يشير إلى عمود "PersonID" في جدول "الأشخاص".
عمود "معرف الشخص" في جدول "الأشخاص" موجود PRIMARY KEY
في جدول "الأشخاص".
عمود "معرف الشخص" في جدول "الطلبات" موجود
FOREIGN KEY
في جدول "الطلبات".
يمنع FOREIGN KEY
القيد إدراج البيانات غير الصالحة في عمود المفتاح الخارجي ، لأنه يجب أن تكون إحدى القيم الموجودة في الجدول الأصلي.
مفتاح خارجي في إنشاء الجدول
ينشئ SQL التالي FOREIGN KEY
عمودًا في عمود "PersonID" عند إنشاء جدول "الطلبات":
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" عندما يكون جدول "الطلبات" قد تم إنشاؤه بالفعل ، استخدم 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;