Partage
  • Partager sur Facebook
  • Partager sur Twitter

Pb de suppression d'enregistrements en cascade

Sujet résolu
    1 avril 2022 à 19:45:01

    Bonjour à tous

    Je galère depuis 2 heures pour créer une contrainte de clé étrangère sur une table permettant de supprimer automatiquement tous les enregistrements de cette table qui font référence à un enregistrement qui vient d'être supprimer dans une autre table .

    Les deux champs qui servent pour la constitution de la relation sont de même type: Integer  (11 ) unsigned

    C'est une méthode que j'utilise pour d'autres tables et d'autres contraintes et habituellement ça marche.

    MSQL me renvoie un message que je ne comprend pas

    Une idée serait la bienvenue! 

    Merci d' avance pour votre aide.

    Jean-Marc

    Je rajoute les 2 tables initiales

    -
    Edité par Jean-MarcEvrard 1 avril 2022 à 21:54:00

    • Partager sur Facebook
    • Partager sur Twitter
      1 avril 2022 à 22:53:55

      Bonjour,

      L'erreur laisse supposer qu'il existe dans la table service_offre une ou plusieurs valeurs dans la colonne categ_id qui n'existent pas dans la table de référence...

      Pour vérifier cela, regarde ce que retourne cette requête :

      SELECT DISTINCT SO.service_off_categ_id

      FROM services_offres SO

      LEFT JOIN offres_class OC

      ON SO.service_off_categ_id = OC.offres_class_id

      WHERE OC.offres_class_id IS NULL

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        2 avril 2022 à 9:33:47

        Bonjour Benzouye

        Merci beaucoup pour votre réponse, qui était effectivement la solution.

        Au début de mon développement j'avais créé de lignes dans la table service_offres qui étaient en relation avec des enregistrements de la table offres_class, mais je n'avais pas encore mis la contrainte de clé étrangère.

        Quand j'ai supprimé des enregistrements dans la table offres_class, les enregistrements dans la table service_offres sont devenus "orphelins".

        c'est pour éviter ça que je mets la contrainte!

        J'ai supprimé les deux enregistrements fautifs dans la table... et maintenant la contrainte a pu être créée, ça marche parfaitement.

        Encore une fois merci pour votre aide.

        Cette bêtise est une bonne leçon que je retiens car j'ai perdu beaucoup de temps... et j'aurai pu le voir si j'avais checké les tables.

        Jean-Marc

        • Partager sur Facebook
        • Partager sur Twitter

        Pb de suppression d'enregistrements en cascade

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown