محدودیت FOREIGN KEY در SQL

محدودیت FOREIGN KEY در SQL

FOREIGN KEY یک جدول به PRIMARY KEY جدول دیگر اشاره دارد.

اجازه دهید با یک مثال خارج کلید خارجی را توضیح دهیم. به دو جدول زیر نگاه کنید:

جدول "Persons":

Id_P LastName FirstName آدرس شهر
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" PRIMARY KEY جدول "Persons" است.

ستون "Id_P" در جدول "Orders" FOREIGN KEY جدول "Orders" است.

FOREIGN KEY Constraint برای جلوگیری از حرکت‌های مخرب بین جدول‌ها استفاده می‌شود.

FOREIGN KEY Constraint می‌تواند از ورود داده‌های غیرقانونی به ستون‌های FOREIGN KEY جلوگیری کند، زیرا باید یکی از مقادیر موجود در جدول اشاره شده باشد.

FOREIGN KEY Constraint در CREATE TABLE

زیرا SQL در هنگام ایجاد جدول "Orders" برای ستون "Id_P" FOREIGN KEY ایجاد می‌کند:

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(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 SQL در ALTER TABLE

اگر می‌خواهید محدودیت FOREIGN KEY را برای ستون "Id_P" در جدول "Orders" که قبلاً وجود دارد ایجاد کنید، لطفاً از 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