Ograniczenie SQL FOREIGN KEY
Klucz obcy w jednym z punktów tabeli klucza podstawowego w innej tabeli.
Zilustrujmy klucz obcy z przykładu. Spójrz na dwóch poniższych tabelach:
"Persons" tabeli:
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" tabeli:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Zauważ, że "P_Id" kolumna w "Orders" punktów tabeli do "P_Id" kolumny w "Persons" tabeli.
"P_Id" kolumna "Persons" tabeli jest klucz podstawowy w "Persons" tabeli.
"P_Id" kolumna "Orders" tabeli jest klucz obcy w "Orders" tabeli.
Ograniczenie klucza obcego służy zapobieganiu działań, które niszczą więzi między tabelami.
Klucz obcy ograniczenie zapobiega również nieprawidłowe dane przed włożona do kolumny klucza obcego, ponieważ musi to być jedna z wartości zawartych w tabeli, który wskazuje.
SQL FOREIGN KEY ograniczeniem CREATE TABLE
Poniższy SQL tworzy klucz obcy na "P_Id" kolumny, gdy "Orders" tabeli jest tworzony:
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)
)
Aby umożliwić nazewnictwa klucz obcy ograniczeń, a do definiowania ograniczenie klucz obcy na wielu kolumnach, należy użyć następującej składni 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)
)
SQL FOREIGN KEY ograniczeniem ALTER TABLE
Aby utworzyć klucz obcy ograniczenia na "P_Id" kolumny, gdy "Orders" tabeli jest już utworzony, należy użyć następującego SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Aby umożliwić nazewnictwa klucz obcy ograniczeń, a do definiowania ograniczenie klucz obcy na wielu kolumnach, należy użyć następującej składni SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Aby usunąć klucz obcy Wiązanie
Aby usunąć ograniczenie klucz obcy, należy użyć następującego SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders