گروه مقاله : SQL Server
تاريخ انتشار : 1394/02/05 - 11:55
كد :252
کلید خارجی در یک جدول به کلید اصلی جدول دیگر اشاره می کند.
اجازه دهید تا کلید خارجی را با یک مثال برای شما توضیح دهیم :
دو جدول زیررا نگاه کنید :
جدول "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