Clefs étrangères, ON UPDATE et ON DELETE
ON UPDATE
et ON DELETE
sont les deux types de règle que l'on attribue aux clefs étrangères.
Ces règles s'appliquent sur les bases de données MySQL utilisant le moteur InnoDB.
Perso, j'ai beau essayer de retenir, à un moment je fini par mélanger, donc voici un petit récapitulatif basé sur ces structures :
ON UPDATE
RESTRICT
: Ne permet pas la modification deGROUPE.idgroupe
si celui-ci est utilisé dans la tableUSER
CASCADE
: Sur modification deGROUPE.idgroupe
, lesUSER.idgroupe
sont mis à jour avec la nouvelle valeur.NO ACTION
: La modification deGROUPE.idgroupe
n’entraîne aucune autre actionSET NULL
: La modification deGROUPE.idgroupe
met la valeur des champsUSER.idgroupe
rattachés àNull
ON DELETE
RESTRICT
: On ne peut pas supprimer un enregistrement duGROUPE
s'il est encore utilisé dans la tableUSER
CASCADE
: La suppression d'un enregistrement de la tableGROUPE
supprime tous les enregistrements rattachés dans la tableUSER
NO ACTION
: La suppression d'un enregistrement de la tableGROUPE
n'a aucun effet sur la tableUSER
SET NULL
: La suppression d'un enregistrement de la tableGROUPE
met àNull
lesUSER.idgroupe
rattachés.
Avec MySQL (InnoDB), NO ACTION
revient à employer RESTRICT
.
Cas généraux
CIF
Dans le cas CIF, en règle générale on a : ON DELETE RESTRICT
et ON UPDATE RESTRICT
.
En effet il est assez rare que l'ID d'un enregistrement change, mais si dans un cas particulier l'ID est amené à changer, on utilisera ON UPDATE CASCADE
CIM
Dans ce cas, il n'est pas utile de conserver une liaison si un enregistrement est supprimé dans USER
ou GROUPE
.
On a alors ON DELETE CASCADE
et ON UPDATE CASCADE
.
Si ON DELETE
et/ou ON UPDATE
ne sont pas précisés, la règle appliquée par défaut est RESTRICT
.
1283
Si cet article vous a été utile ou simplement si vous appréciez ce site, n'hésitez pas à me soutenir via Paypal ou en utilisant la bannière Amazon1) ci-dessous pour vos futurs achats, ça ne vous coûtera pas plus cher et ça soutiendra un peu ce site

Commentaires