محدودیت Foreign Key در sql
محدودیت Foreign Key , SQL FOREIGN KEY Constraint یا کلید خارجی در اس کیوال
یک FOREIGN KEY یا کلید خارجی در اسکیوال ، در یک جدول به یک PRIMARY KEY در جدولی دیگر اشاره می کند.
- برای ارتباط بین جداول از محدودیت Foreign Key استفاده میشود و در اصل Relational Integrity را فراهم میکند.
- به عبارت ساده تر ، کلید خارجی همان مقدار کلید اصلی از جدول دیگر است.
- مقدار یک کلید خارجی میتواند تکراری باشد.
فیلدهای کلید خارجی ، سه نوع محدودیت را ایجاد میکنند :
- اجازه حذف رکوردی از جدول پدر نداریم که فرزندی داشته باشد.
- اجازه insert رکورد در جدول فرزند با کد پدری که در جدول پدر موجود نیست را نداریم.
- مقدار کلید پدری را که دارای فرزند هست را نمیتوانیم تغییر دهیم.
همچنین محدودیت FOREIGN KEY از وارد کردن داده های نامعتبر در جدول جلوگیری میکند. (در فیلد foreign key) ، دلیل آن هم، این است که با مقادیر جدول دیگر که به آن اشاره می کند تطابق ندارد.
برای تعریف یک محدودیت FOREIGN KEY در دستور create table ، روی یک ستون از دستور SQL زیر استفاده می کنیم:
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 روی چند ستون از دستور SQL زیر استفاده می کنیم:
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)
)
محدودیت FOREIGN KEY پس از ساخته شدن جدول
برای تغییر دادن یک محدودیت FOREIGN KEY روی یک ستون از دستور SQL زیر استفاده می کنیم:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
برای تغییر دادن محدودیت FOREIGN KEY روی چند ستون، از دستور SQL زیر استفاده می کنیم:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
از بین بردن FOREIGN KEY
برای از بین بردن محدودیت FOREIGN KEY ، از دستور SQL زیر استفاده می کنیم:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders