قيود FOREIGN KEY في SQL

قيود FOREIGN KEY في SQL

يُشير مفتاح خارجي في جدول إلى مفتاح رئيسي في جدول آخر.

دعونا نوضح مفتاح خارجي من خلال مثال. انظر إلى الجداول التالية:

جدول "Persons":

Id_P اسم العائلة اسم الأب عنوان مدينة
1 أدمز جون شارع أكسفورد لندن
2 بوش جورج شارع فيفث أفينيو نيويورك
3 كارتر توماس شارع تشانغان بكين

جدول "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

لاحظ أن عمود "Id_P" في "Orders" يشير إلى عمود "Id_P" في جدول "Persons".

عمود "Id_P" في جدول "Persons" هو المفتاح الرئيسي في جدول "Persons".

عمود "Id_P" في جدول "Orders" هو مفتاح خارجي في جدول "Orders".

يستخدم محدد مفتاح خارجي لتجنب أعمال تدميرية بين الجداول.

يمكن لمحدد مفتاح خارجي أيضًا منع إدخال بيانات غير قانونية في عمود المفتاح الخارجي، لأنه يجب أن يكون أحد القيم في الجدول الذي يشير إليه.

محدد مفتاح خارجي في إنشاء الجدول

هذا SQL في إنشاء جدول "Orders" يتم إنشاء مفتاح خارجي لـ "Id_P":

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
مفتاح خارجي (Id_P) يشير إلى مرجع (Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

إذا كنت بحاجة إلى تسمية قيود FOREIGN KEY و تعريف قيود FOREIGN KEY لأكثر من عمود، استخدم الجملة التالية لغة SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)
)

قيود FOREIGN KEY في ALTER TABLE SQL

إذا كنت ترغب في إنشاء قيود FOREIGN KEY لجدول "Orders" الذي يوجد فيه عمود "Id_P"، استخدم SQL التالية:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

إذا كنت بحاجة إلى تسمية قيود FOREIGN KEY و تعريف قيود FOREIGN KEY لأكثر من عمود، استخدم الجملة التالية لغة SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

إلغاء تنفيذ قيود FOREIGN KEY

إذا كنت ترغب في إلغاء تنفيذ قيود FOREIGN KEY، استخدم SQL التالية:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders