SQL FOREIGN KEY-Einschränkungen FOREIGN KEYConstraints
SQL FOREIGN KEY-Constraint
Ein FOREIGN KEY in einer Tabelle verweist auf einen UNIQUE KEY (einen Schlüssel mit einer eindeutigen Einschränkung) in einer anderen Tabelle.
Lassen Sie uns den Fremdschlüssel an einem Beispiel erklären. Sehen Sie sich die folgenden zwei Tabellen an:
"Persons"-Tabelle:
| P_Id | LastName | FirstName | Adresse | Stadt |
|---|---|---|---|---|
| 1 | Hansen | Ola | Timoteivn 10 | Sandnes |
| 2 | Svendson | Tove | Borgvn 23 | Sandnes |
| 3 | Pettersen | Kari | Storgt 20 | Stavanger |
"Orders"-Tabelle:
| O_Id | OrderNo | P_Id |
|---|---|---|
| 1 | 77895 | 3 |
| 2 | 44678 | 3 |
| 3 | 22456 | 2 |
| 4 | 24562 | 1 |
Beachten Sie, dass die Spalte "P_Id" in der Tabelle "Orders" auf die Spalte "P_Id" in der Tabelle "Persons" verweist.
Die Spalte "P_Id" in der Tabelle "Persons" ist der PRIMARY KEY der Tabelle "Persons".
Die Spalte "P_Id" in der Tabelle "Orders" ist der FOREIGN KEY der Tabelle "Orders".
Die FOREIGN KEY-Einschränkung wird verwendet, um Aktionen zu verhindern, die Verknüpfungen zwischen Tabellen zerstören würden.
Die FOREIGN KEY-Einschränkung verhindert außerdem, dass ungültige Daten in die Fremdschlüsselspalte eingefügt werden, da der eingefügte Wert einem der Werte in der Tabelle entsprechen muss, auf die er verweist.
SQL FOREIGN KEY-Einschränkung bei CREATE TABLE
Das folgende SQL erstellt eine FOREIGN KEY-Einschränkung für die Spalte "P_Id", wenn die Tabelle "Orders" erstellt wird:
MySQL:
(
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:
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
Um eine FOREIGN KEY-Constraint zu benennen und eine FOREIGN KEY-Constraint für mehrere Spalten zu definieren, verwenden Sie die folgende SQL-Syntax:
MySQL / SQL Server / Oracle / MS Access:
(
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-Constraint bei ALTER TABLE
Wenn die Tabelle "Orders" bereits erstellt wurde, verwenden Sie den folgenden SQL-Befehl, um eine FOREIGN KEY-Constraint für die Spalte "P_Id" zu erstellen:
MySQL / SQL Server / Oracle / MS Access:
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Um eine FOREIGN KEY-Constraint zu benennen und eine FOREIGN KEY-Constraint für mehrere Spalten zu definieren, verwenden Sie die folgende SQL-Syntax:
MySQL / SQL Server / Oracle / MS Access:
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
Löschen eines FOREIGN KEY-Constraints
Um einen FOREIGN KEY-Constraint zu löschen, verwenden Sie folgendes SQL:
MySQL:
DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
DROP CONSTRAINT fk_PerOrders
Andere Erweiterungen