SQL constrângere FOREIGN KEY
O FOREIGN KEY într-un tabel de puncte la o cheie primară într-un alt tabel.
Să exemplificăm cheia externă cu un exemplu. Uită-te la următoarele două tabele:
"Persons" tabel:
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" tabel:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Rețineți că "P_Id" coloana în "Orders" puncte de masă la "P_Id" coloana în "Persons" tabel.
"P_Id" coloana în "Persons" Tabelul este PRIMARY KEY în "Persons" tabel.
"P_Id" coloana din "Orders" masa este o FOREIGN KEY in "Orders" tabel.
Constrangerea foreign este folosit pentru a preveni acțiuni care ar distruge legăturile dintre tabele.
Cetățeanul străin Constrângerea KEY previne, de asemenea, date incorecte de a fi introduse în coloana de cheie externă, deoarece trebuie să fie una dintre valorile cuprinse în tabelul de puncte de la.
SQL EXTERNE KEY Constrângerea pe CREATE TABLE
Următoarele SQL creează o cheie externă pe "P_Id" coloana atunci când "Orders" este creat tabel:
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)
)
Pentru a permite numirea unei constrângeri FOREIGN KEY, cât și pentru definirea unei constrangerea foreign pe mai multe coloane, folosiți următoarea sintaxă 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 EXTERNE KEY Constrângerea pe ALTER TABLE
Pentru a crea o constrângere FOREIGN KEY pe "P_Id" coloana atunci când "Orders" Tabelul este deja creat, folosiți următoarele SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Pentru a permite numirea unei constrângeri FOREIGN KEY, cât și pentru definirea unei constrangerea foreign pe mai multe coloane, folosiți următoarea sintaxă SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Pentru a elimina un constrangerea foreign
Pentru a elimina o constrângere FOREIGN KEY, folosiți următoarele SQL:
MySQL:
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders