Partage
  • Partager sur Facebook
  • Partager sur Twitter

procédure stockée iterate et insert

    9 novembre 2019 à 13:35:25

    J'ai créé une table, l'ai remplie de 182 lignes, puis, plus tard, j'ai voulu rajouter un champ id_m, J'ai donc fait ce code, afin de remplir ce champ avec une itération d'entiers:

    CREATE PROCEDURE iteration_id_m( IN id_m INT )
    BEGIN
        iteridm: LOOP
            SET id_m = id_m + 1;
            IF id_m < 183 THEN
                UPDATE `Matable` SET `id_m` = id_m;             
                ITERATE iterid;
            END IF;
            LEAVE iteridm;
        END LOOP iteridm;
    END|

    Quand j'appelle la procédure ça me donne une colonne id_m avec dedans 182 à chaque ligne et non pas 1,2 3 4 etc...

    Où est le problème ?
    • Partager sur Facebook
    • Partager sur Twitter

    Ce qui se conçoit bien s'énonce clairement.

      9 novembre 2019 à 14:44:16

      Bonjour,

      Ta requête met à jour toute le table à chaque itération. Donc c'est normal qu'après la dernière itération ta table contienne la même valeur partout...

      Je ne sais pas ce que tu cherches à faire vraiment, ni pourquoi tu en es là, mais dans l'absolu tu as besoin d'un curseur ici ...

      • 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 novembre 2019 à 15:39:09

        Heu... Un curseur ? Mais encore ?

        En fait je voudrais très exactement que cette colonne rajoutée devienne une clé à auto incrément pour les enregistrements futurs. Ma clé  de base était constituée de varchar uniques et ce n'était finalement pas une bonne idée... seulement maintenant j'ai énormément d'enregistrements dans cette table.

        Bon évidemment je pourrais exporter tout ça, supprimer la table et la recreer avec ce nouveau champ à auto increment puis insérer mes données, mais étant donné que j'utilise peu les procédures stockées, je me disais que c'était l'occasion d' apprendre à m'en servir...

        • Partager sur Facebook
        • Partager sur Twitter

        Ce qui se conçoit bien s'énonce clairement.

          9 novembre 2019 à 17:30:59

          Recherche CURSOR MySQL. Tu trouveras ton bonheur.

          Le principe c'est de boucler sur les résultats d'une requête, un peu comme LOOP.

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

          procédure stockée iterate et insert

          × 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