SQL FOREIGN KEY restriktion
- Forrige side SQL Primærnøgle
- Næste side SQL Check
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
- Forrige side SQL Primærnøgle
- Næste side SQL Check