Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL - Valeur par défaut dans une colonne

Sujet résolu
    13 mars 2019 à 19:48:03

    Bonjour,

    J'ai lu qu'avec MySQL 5.7 les seules valeurs possibles en "DEFAULT" sont datetime, timestamp et les constantes.

    J'aurais aimé stocker un code de vérification généré automatiquement dans une colonne (avec un RAND()).

    Dans le manuel de MySQL, j'ai vu que la version 8.0 permettait de le faire:

    https://dev.mysql.com/doc/refman/8.0/en/data-type-defaults.html

    Mais ça ne fonctionne pas...

    Quelqu'un sait s'il y a une solution pour générer ce code directement dans la base de données, sans passer par le code.

    Merci !

    • Partager sur Facebook
    • Partager sur Twitter
      14 mars 2019 à 9:39:21

      Bonjour,

      Quelle version exacte (3 nombres) de MySQL as-tu ?

      Quelle est la structure de la table en question (colonnes, types, contraintes) ?

      MallauryGérard a écrit:

      ça ne fonctionne pas...

      C'est un peu léger comme description :p

      -
      Edité par Benzouye 14 mars 2019 à 9:41:28

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        14 mars 2019 à 10:06:34

        Merci pour ta réponse.

        Ma version est la 8.0.15

        J'ai repris exactement le code de la doc.

        Et en fait, lorsque je construit la table via SQL, ça fonctionne, mais quand j'entre une donnée, la valeur se met automatiquement à 0 et pas à RAND().

        Et sur phpmyadmin c'est carrément impossible d'ajouter un RAND() graphiquement à une colonne.

        • Partager sur Facebook
        • Partager sur Twitter
          14 mars 2019 à 10:20:31

          Peux-tu poster le CREATE TABLE de cette table ?
          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            14 mars 2019 à 14:11:13

            CREATE TABLE t1 (
              i INT         DEFAULT 0,
              c VARCHAR(10) DEFAULT '',
              f FLOAT       DEFAULT (RAND())
            );
            Voilà le code
            • Partager sur Facebook
            • Partager sur Twitter
              14 mars 2019 à 18:34:52

              Ton histoire me trotte dans la tête .. J'ai fait un test :

              mysql> CREATE TABLE aleatoire (
                  -> col_aleatoire FLOAT NOT NULL DEFAULT ( RAND() ),
                  -> col_valeur VARCHAR(10) NOT NULL
                  -> );
              Query OK, 0 rows affected (0.22 sec)
              
              mysql> INSERT INTO aleatoire ( col_valeur ) VALUES ( "Toto" );
              Query OK, 1 row affected (0.06 sec)
              
              mysql> INSERT INTO aleatoire ( col_valeur ) VALUES ( "Titi" );
              Query OK, 1 row affected (0.09 sec)
              
              mysql> INSERT INTO aleatoire ( col_valeur ) VALUES ( "Tutu" );
              Query OK, 1 row affected (0.05 sec)
              
              mysql> SELECT * FROM aleatoire;
              +---------------+------------+
              | col_aleatoire | col_valeur |
              +---------------+------------+
              |      0.712079 | Toto       |
              |      0.248797 | Titi       |
              |      0.107748 | Tutu       |
              +---------------+------------+
              3 rows in set (0.00 sec)

              Donc avec MySQL 8.0.15 ... pas de problème ...

              • Partager sur Facebook
              • Partager sur Twitter
              Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
                15 mars 2019 à 18:13:05

                Désolé pour la réponse tardive.
                Effectivement, c'est étrange, je vais voir s'il n'y a pas eu de problème lors de la mise à jour de MySQL dans wamp.

                Merci beaucoup pour ton aide en tout cas.

                Si je trouve une solution pertinente, je la posterai...

                ---

                Edit:

                Eh bien, il semblerait que phpMyAdmin n'aime pas trop MySQL 8.0
                Le problème était que j'insérais une entrée graphiquement. Quand je fais les tests en SQL pur, ça fonctionne... Étrange quand même.

                Merci pour ton aide !

                -
                Edité par MallauryGérard 15 mars 2019 à 18:28:16

                • Partager sur Facebook
                • Partager sur Twitter

                MySQL - Valeur par défaut dans une colonne

                × 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