CASCADE
propagera le changement lorsque le parent changera. (Si vous supprimez une ligne, les lignes des tableaux contraints qui font référence à cette ligne seront également supprimées, etc.)
SET NULL
définit la valeur de la colonne sur NULL lorsqu'une ligne parent disparaît.
RESTRICT
provoque l'échec de la tentative de suppression d'une ligne parent.
EDIT :Vous n'avez pas posé de questions à leur sujet, mais le standard SQL définit deux autres actions :SET DEFAULT
et NO ACTION
. Dans MySQL, NO ACTION
est équivalent à RESTRICT
. (Dans certains SGBD, NO ACTION
est une vérification différée, mais dans MySQL toutes les vérifications sont immédiates.) L'analyseur MySQL accepte SET DEFAULT
, mais les moteurs InnoDB et NDB rejettent ces instructions, donc SET DEFAULT
ne peut pas être utilisé pour une ON UPDATE
ou ON DELETE
contrainte.
Notez également que les actions de clé étrangère en cascade n'activent pas les déclencheurs dans MySQL.