SQL FOREIGN KEY-begränsning
- Föregående sida SQL Primärnyckel
- Nästa sida SQL Check
SQL FOREIGN KEY-begränsning
En tabellens FOREIGN KEY pekar på en PRIMARY KEY i en annan tabell.
Låt oss förklara foreign key med ett exempel. Se nedan två tabeller:
Tabellen "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 |
Tabellen "Orders":
Id_O | OrderNo | Id_P |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 1 |
4 | 24562 | 1 |
Observera att kolumnen "Id_P" i "Orders" pekar på kolumnen "Id_P" i tabellen "Persons".
Kolumnen "Id_P" i tabellen "Persons" är en PRIMARY KEY i tabellen "Persons".
Kolumnen "Id_P" i tabellen "Orders" är en FOREIGN KEY i tabellen "Orders".
FOREIGN KEY-konstraint används för att förhindra åtgärder som kan förstöra anslutningen mellan tabeller.
FOREIGN KEY-konstraint kan också förhindra att ogiltiga data införs i foreign key-kolumnen, eftersom den måste vara en av värdena i den tabell den pekar på.
FOREIGN KEY-konstraint vid CREATE TABLE
Nedanstående SQL skapar FOREIGN KEY för kolonnen "Id_P" när tabellen "Orders" skapas:
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) )
Om du behöver namnge FOREIGN KEY-begränsningen och definiera FOREIGN KEY-begränsningar för flera kolonner, använd följande 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 Persons(Id_P) )
SQL FOREIGN KEY-begränsning på ALTER TABLE
Om du skapar FOREIGN KEY-begränsningen för kolonnen "Id_P" när tabellen "Orders" redan finns, använd följande SQL:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Om du behöver namnge FOREIGN KEY-begränsningen och definiera FOREIGN KEY-begränsningar för flera kolonner, använd följande SQL-syntax:
MySQL / SQL Server / Oracle / MS Access:
ALTER TABLE Orders ADD CONSTRAINT fk_PerOrders FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
Häva FOREIGN KEY-begränsning
Om du vill häva FOREIGN KEY-begränsningen, använd följande SQL:
MySQL:
ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders
SQL Server / Oracle / MS Access:
ALTER TABLE Orders DROP CONSTRAINT fk_PerOrders
- Föregående sida SQL Primärnyckel
- Nästa sida SQL Check