SQL FOREIGN KEY Beperking
- Vorige pagina SQL Primaire sleutel
- Volgende pagina SQL Check
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
- Vorige pagina SQL Primaire sleutel
- Volgende pagina SQL Check