MySQL FOREIGN KEY -beperking
MySQL FOREIGN KEY-beperking
De FOREIGN KEY
beperking wordt gebruikt om acties te voorkomen die koppelingen tussen tabellen zouden vernietigen.
A FOREIGN KEY
is een veld (of verzameling velden) in de ene tabel, dat verwijst naar de PRIMARY KEY
in een andere tabel.
De tabel met de externe sleutel wordt de onderliggende tabel genoemd en de tabel met de primaire sleutel wordt de tabel waarnaar wordt verwezen of de bovenliggende tabel.
Bekijk de volgende twee tabellen:
personen tafel
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Bestellingen Tabel:
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Merk op dat de kolom "Persoons-ID" in de tabel "Bestellingen" verwijst naar de kolom "Persoons-ID" in de tabel "Personen".
De kolom "Persoons-ID" in de tabel "Personen" is de kolom in de tabel PRIMARY KEY
"Personen".
De kolom "Persoons-ID" in de tabel "Bestellingen" is een
FOREIGN KEY
in de tabel "Bestellingen".
De FOREIGN KEY
beperking voorkomt dat ongeldige gegevens worden ingevoegd in de refererende-sleutelkolom, omdat het een van de waarden in de bovenliggende tabel moet zijn.
BUITENLANDSE SLEUTEL op CREATE TABLE
De volgende SQL creëert een FOREIGN KEY
in de kolom "PersonID" wanneer de tabel "Orders" wordt gemaakt:
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Gebruik de volgende SQL-syntaxis om het benoemen van een beperking toe te staan en om een beperking voor meerdere kolommen FOREIGN KEY
te definiëren :
FOREIGN KEY
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
BUITENLANDSE SLEUTEL op ALTER TABLE
Gebruik de volgende SQL om een FOREIGN KEY
beperking te maken voor de kolom "Persoons-ID" wanneer de tabel "Orders" al is gemaakt:
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Gebruik de volgende SQL-syntaxis om het benoemen van een beperking toe te staan en om een beperking voor meerdere kolommen FOREIGN KEY
te definiëren :
FOREIGN KEY
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
DROP een BUITENLANDSE SLEUTELbeperking
FOREIGN KEY
Gebruik de volgende SQL om een beperking te verwijderen:
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;