Partage
  • Partager sur Facebook
  • Partager sur Twitter

On delete set ' valeur par defaut'

Sujet résolu
    7 septembre 2019 à 0:14:59

     salut tout le monde , quand on crée un clé étrangère on peut préciser le comportement par exemple avec on delete  set null , mais est il possible que ce soit avec une valeur par défaut au lieu de null?

    merci pour votre compréhension.

    -
    Edité par PE-Belamy18 7 septembre 2019 à 0:15:24

    • Partager sur Facebook
    • Partager sur Twitter
      9 septembre 2019 à 9:29:02

      Bonjour,

      Ce n'est pas la contrainte de clé étrangère qui décide de la valeur à renseigner (même par défaut), son rôle est juste de contrôler que tu n'enregistres pas une valeur incohérente dans la colonne, une valeur qui n'existerait pas dans la colonne de référence ...

      Pour définir une valeur par défaut dans une colonne, c'est l'option DEFAULT de la colonne lors de la création de la table qui va jouer ce rôle.

      Prenons l'exemple de ton précédent message :

      Tu as des articles et des catégories, et un table de relation article_categorie :

      • article ( id [pk], titre, contenu )
      • categorie ( id [pk], libelle )
      • article_categorie ( id_article [pk][fk], id_categorie [pk][fk] )

      Le comportement possible de MySQL est de définir que lorsque l'on insère dans la table de relation, si la catégorie n'est pas renseignée, alors on mette par défaut la catégorie d'id 1 (par exemple).

      CREATE TABLE article_categorie (
          id_article INT UNSIGNED NOT NULL,
          id_categorie INT UNSIGNED NOT NULL DEFAULT 1,
          PRIMARY KEY ( id_article, id_categorie ),
          FOREIGN KEY ( id_article ) REFERENCES article ( id_article ),
          FOREIGN KEY ( id_categoroie ) REFERENCES categorie ( id_categorie )
      ) Engine=InnoDB;

      Par contre, MySQL ne permet pas de dire "Si l'on insère dans la table article_categorie un id_categorie qui n'existe pas dans la table de référence alors remplace par l'id 1".

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        9 septembre 2019 à 20:54:59

        Oui vous avez raison , merci beaucoup .
        • Partager sur Facebook
        • Partager sur Twitter

        On delete set ' valeur par defaut'

        × 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