MySQL ON DELETE CASCADE

Dans le tutoriel précédent, nous avons vu comment supprimer des lignes d’une tables en utilisant l’instruction DELETE. MySQL fournit un moyen plus facile qui vous permet de supprimer automatiquement les données des tables filles lorsque vous supprimez les données de la table mère en utilisant ON DELETE CASCADE.
 
 

Exemple: ON DELETE CASCADE

Nous allons utiliser une simple base de données qui est constitué de deux tables:

  • La table des clients stocke les données sur les clients avec l’identifiant, le nom, l’age et l’adresse du client.
  • La table des commandes stocke les commandes effectués par des clients.

 


Table « Clients »
 

 
Table « Commandes »
 

 
Liste des commandes MySQL

6 réflexions sur “MySQL ON DELETE CASCADE

  • décembre 4, 2019 à 4:43 pm
    Permalien

    Bonjour, cela fait 3 jours que je suis sur ce problème. J’utilise bel et bien cette méthode, mais rien n’y fait. J’ai une table « PERSONNE » avec un « ID_P » (clé primaire) et la table « CONTRIBUTEUR » avec une clé étrangère « IP_C » qui fait référence à PERSONNE(ID_P) mais lorsque que je supprime ma ligne dans PERSONNE, il ne supprime pas dans CONTRIBUTEUR. J’ai pourtant bien écrit : CONSTRAINT FK_CONTRIBUTEUR_PERSONNE FOREIGN KEY (ID_C) REFERENCES PERSONNE(ID_P) ON DELETE CASCADE

    Auriez- vous une idée de pourquoi cela ne fonctionne pas ?

    Cordialement.

    Répondre
    • décembre 5, 2019 à 9:45 am
      Permalien

      Bonjour Quentin,

      Remarquez bien, ça peut être une faute d’orthographe, vous avez nommé la clé étrangère « IP_C », donc la requête doit être écrite comme suit : CONSTRAINT FK_CONTRIBUTEUR_PERSONNE FOREIGN KEY (IP_C) REFERENCES PERSONNE(ID_P) ON DELETE CASCADE

      Répondre
      • décembre 6, 2019 à 12:04 pm
        Permalien

        Bonjour, oui c’est bien une faute de frappe. La clé étrangère est bel et bien ID_C. Désolé pour cette erreur. Mais du coup je ne vois pas d’où viens le problème.

        Auriez-vous une idée ?

        Répondre
      • décembre 6, 2019 à 12:19 pm
        Permalien

        J’ai oublié de préciser que j’effectue mes tests sur PhpMyAdmin aussi. Je le dis au cas où cela changerai quelque chose.

        Répondre
    • décembre 6, 2019 à 2:52 pm
      Permalien

      Normalement votre requête est correcte, mais vous devez être sur que le type de données pour PERSONNE.ID_P doit correspondre à celui de CONTRIBUTEUR.ID_C et n’oubliez pas que les contraintes doivent être déclarées après les colonnes.

      Bonne chance.

      Répondre
      • décembre 7, 2019 à 7:14 pm
        Permalien

        Oui, tout cela est bel et bien présent dans mon code. Merci quand même pour votre aide, je continuerai à chercher !

        Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *