SQL FOREIGN KEY restriktion

SQL FOREIGN KEY restriktion

En tabels FOREIGN KEY peger på en PRIMARY KEY i en anden tabel.

Lad os gennem et eksempel forklare fremmednøgle. Se nedenstående to tabeller:

Tabel "Persons":

Id_P LastName FirstName Address 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

Bemærk, at "Id_P" kolonnen i "Orders" peger på "Id_P" kolonnen i "Persons" tabellen.

"Id_P" kolonnen i "Persons" tabellen er en PRIMARY KEY i "Persons" tabellen.

"Id_P" kolonnen i "Orders" tabellen er en FOREIGN KEY i "Orders" tabellen.

FOREIGN KEY kontrakt bruges til at forhindre handlinger, der kan ødelægge forbindelsen mellem tabeller.

FOREIGN KEY kontrakt kan også forhindre ugyldige data fra at blive indsat i fremmednøglekolonnen, fordi den skal være en af værdierne i den tabel, den peger på.

FOREIGN KEY kontrakt på CREATE TABLE

Følgende SQL opretter FOREIGN KEY for "Id_P" kolonnen når "Orders" tabel oprettes:

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

Hvis du har brug for at navngive FOREIGN KEY-begrænsningen samt definere FOREIGN KEY-begrænsninger for flere kolonner, skal du bruge følgende SQL-syntaks:

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-begrænsning på ALTER TABLE

Hvis du opretter FOREIGN KEY-begrænsningen for kolonnen "Id_P" i tabellen "Orders", skal du bruge følgende SQL:

MySQL / SQL Server / Oracle / MS Access:

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

Hvis du har brug for at navngive FOREIGN KEY-begrænsningen samt definere FOREIGN KEY-begrænsninger for flere kolonner, skal du bruge følgende SQL-syntaks:

MySQL / SQL Server / Oracle / MS Access:

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

Annuller FOREIGN KEY-begrænsning

Hvis du vil annullere FOREIGN KEY-begrænsningen, skal du bruge følgende SQL:

MySQL:

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

SQL Server / Oracle / MS Access:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders