SQL FOREIGN KEY-Bedingung

SQL FOREIGN KEY-Bedingung

Ein FOREIGN KEY in einer Tabelle verweist auf die PRIMARY KEY in einer anderen Tabelle.

Lassen Sie uns mit einem Beispiel erklären, wie man Fremdschlüssel verwendet. Sehen Sie sich die folgenden beiden Tabellen an:

Tabelle "Persons":

Id_P Nachname Vorname Adresse City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Tabelle "Orders":

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1

Bitte beachten Sie, dass die Spalte "Id_P" in der "Orders"-Tabelle auf die Spalte "Id_P" in der "Persons"-Tabelle verweist.

Die Spalte "Id_P" in der "Persons"-Tabelle ist die PRIMARY KEY in der "Persons"-Tabelle.

Die Spalte "Id_P" in der "Orders"-Tabelle ist ein FOREIGN KEY in der "Orders"-Tabelle.

FOREIGN KEY Constraints dienen dazu, Aktionen zu verhindern, die die Verbindungen zwischen Tabellen stören könnten.

FOREIGN KEY Constraints verhindern auch die Eingabe von ungültigen Daten in die Fremdschlüsselspalte, da dieser Wert einer der Werte in der auf die Tabelle verwiesenen Tabelle sein muss.

FOREIGN KEY Constraint bei CREATE TABLE

Die folgende SQL erstellt bei der Erstellung der "Orders"-Tabelle eine FOREIGN KEY für die Spalte "Id_P":

MySQL:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
)

SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Personen(Id_P)
)

Wenn Sie FOREIGN KEY Beschränkungen benennen möchten und FOREIGN KEY Beschränkungen für mehrere Spalten definieren möchten, verwenden Sie die folgende SQL-Syntax:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P)
REFERENCES Personen(Id_P)
)

SQL FOREIGN KEY Constraint auf ALTER TABLE

Wenn Sie FOREIGN KEY Beschränkungen für die Spalte "Id_P" in der Tabelle "Orders" erstellen möchten, die bereits existiert, verwenden Sie die folgende SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD FOREIGN KEY (Id_P)
REFERENCES Personen(Id_P)

Wenn Sie FOREIGN KEY Beschränkungen benennen möchten und FOREIGN KEY Beschränkungen für mehrere Spalten definieren möchten, verwenden Sie die folgende SQL-Syntax:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Personen(Id_P)

FOREIGN KEY Beschränkung aufheben

Um FOREIGN KEY Beschränkungen aufzuheben, verwenden Sie die folgende SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders