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.idgroupesi celui-ci est utilisé dans la tableUSERCASCADE: Sur modification deGROUPE.idgroupe, lesUSER.idgroupesont mis à jour avec la nouvelle valeur.NO ACTION: La modification deGROUPE.idgroupen’entraîne aucune autre actionSET NULL: La modification deGROUPE.idgroupemet la valeur des champsUSER.idgrouperattachés àNull
ON DELETE
RESTRICT: On ne peut pas supprimer un enregistrement duGROUPEs'il est encore utilisé dans la tableUSERCASCADE: La suppression d'un enregistrement de la tableGROUPEsupprime tous les enregistrements rattachés dans la tableUSERNO ACTION: La suppression d'un enregistrement de la tableGROUPEn'a aucun effet sur la tableUSERSET NULL: La suppression d'un enregistrement de la tableGROUPEmet àNulllesUSER.idgrouperattaché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.
2764
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