گروه مقاله : SQL Server
تاريخ انتشار : 1394/02/05 - 11:55
كد :252

محدودیتFOREIGN KEY ( کلید خارجی ) در 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  در ساختن جدول :
 
دستور 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)
)
 
 
FOREIGN KEY در ALTER TABLE (تغییر جدول) :
برای ایجاد  FOREIGN KEY  روی ستون "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 :
برای برداشتن یک FOREIGN KEY از دستور زیر استفاده کنید :
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
نظرات كاربران :