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:

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)
)

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:

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-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:

ALTER TABLE Orders
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:

ALTER TABLE Orders
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:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

Andere Erweiterungen