SQL FOREIGN KEY Beperking

SQL FOREIGN KEY Beperking

Een FOREIGN KEY in een tabel verwijst naar de PRIMARY KEY in een andere tabel.

Laten we een voorbeeld gebruiken om de FOREIGN KEY te verklaren. Kijk naar de volgende twee tabellen:

Tabel "Persons":

Id_P Achternaam Voornaam Adres City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street Beijing

Tabel "Orders":

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

Let op, de kolom "Id_P" in "Orders" verwijst naar de kolom "Id_P" in de tabel "Persons".

De kolom "Id_P" in de tabel "Persons" is de PRIMARY KEY in de tabel "Persons".

De kolom "Id_P" in de tabel "Orders" is een FOREIGN KEY in de tabel "Orders".

Een FOREIGN KEY-constrantie wordt gebruikt om het vernietigen van de verbinding tussen tabellen te voorkomen.

Een FOREIGN KEY-constrantie kan ook voorkomen dat ongeldige gegevens worden ingevoerd in de veld van de FOREIGN KEY, omdat deze één van de waarden in de naar verwijzende tabel moet zijn.

FOREIGN KEY-constrantie op CREATE TABLE

De volgende SQL maakt een FOREIGN KEY voor de kolom "Id_P" aan bij het aanmaken van de tabel "Orders":

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 Persons(Id_P)
)

Als je FOREIGN KEY beperking wilt benoemen en FOREIGN KEY beperkingen voor meerdere kolommen wilt definiëren, gebruik dan onderstaande SQL syntaxis:

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 Persons(Id_P)
)

SQL FOREIGN KEY Constraint op ALTER TABLE

Als je FOREIGN KEY beperking voor kolom 'Id_P' wilt maken in de tabel 'Orders' die al bestaat, gebruik dan onderstaande SQL:

MySQL / SQL Server / Oracle / MS Access:

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

Als je FOREIGN KEY beperking wilt benoemen en FOREIGN KEY beperkingen voor meerdere kolommen wilt definiëren, gebruik dan onderstaande SQL syntaxis:

MySQL / SQL Server / Oracle / MS Access:

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

Intrekken FOREIGN KEY beperking

Als je FOREIGN KEY beperking wilt intrekken, gebruik dan onderstaande SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders