Contrainte MySQL FOREIGN KEY
Contrainte MySQL FOREIGN KEY
La FOREIGN KEY
contrainte est utilisée pour empêcher les actions qui détruiraient les liens entre les tables.
A FOREIGN KEY
est un champ (ou une collection de champs) dans une table, qui fait référence à PRIMARY KEY
dans une autre table.
La table avec la clé étrangère est appelée la table enfant et la table avec la clé primaire est appelée la table référencée ou parente.
Regardez les deux tableaux suivants :
Tableau des personnes
PersonID | LastName | FirstName | Age |
---|---|---|---|
1 | Hansen | Ola | 30 |
2 | Svendson | Tove | 23 |
3 | Pettersen | Kari | 20 |
Tableau des commandes
OrderID | OrderNumber | PersonID |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
Notez que la colonne "PersonID" de la table "Orders" pointe vers la colonne "PersonID" de la table "Persons".
La colonne "PersonID" dans la table "Persons" est la PRIMARY KEY
dans la table "Persons".
La colonne "PersonID" dans la table "Commandes" est un
FOREIGN KEY
dans la table "Commandes".
La FOREIGN KEY
contrainte empêche l'insertion de données non valides dans la colonne de clé étrangère, car il doit s'agir de l'une des valeurs contenues dans la table parent.
CLÉ ÉTRANGÈRE sur CRÉER TABLE
Le SQL suivant crée un FOREIGN KEY
sur la colonne "PersonID" lorsque la table "Orders" est créée :
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
Pour autoriser la dénomination d'une FOREIGN KEY
contrainte et pour définir une
FOREIGN KEY
contrainte sur plusieurs colonnes, utilisez la syntaxe SQL suivante :
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)
);
CLÉ ÉTRANGÈRE sur ALTER TABLE
Pour créer une FOREIGN KEY
contrainte sur la colonne "PersonID" alors que la table "Orders" est déjà créée, utilisez le SQL suivant :
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Pour autoriser la dénomination d'une FOREIGN KEY
contrainte et pour définir une
FOREIGN KEY
contrainte sur plusieurs colonnes, utilisez la syntaxe SQL suivante :
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID);
Supprimer une contrainte FOREIGN KEY
Pour supprimer une FOREIGN KEY
contrainte, utilisez le SQL suivant :
ALTER TABLE Orders
DROP FOREIGN KEY FK_PersonOrder;