Oui, une clé étrangère est un type de contrainte. MySQL a une prise en charge inégale des contraintes :
PRIMARY KEY
:oui comme contrainte de table et contrainte de colonne.FOREIGN KEY
:oui comme contrainte de table, mais uniquement avec les moteurs de stockage InnoDB et BDB ; sinon analysé mais ignoré.CHECK
:analysé mais ignoré dans tous les moteurs de stockage.UNIQUE
:oui comme contrainte de table et contrainte de colonne.NOT NULL
:oui comme contrainte de colonne.DEFERRABLE
et autres attributs de contrainte :pas de prise en charge.
La CONSTRAINT
La clause vous permet de nommer explicitement la contrainte, soit pour rendre les métadonnées plus lisibles, soit pour utiliser le nom lorsque vous souhaitez supprimer la contrainte. La norme SQL exige que la CONSTRAINT
clause est facultative. Si vous l'omettez, le RDBMS crée automatiquement un nom, et le nom dépend de l'implémentation.