Forum Programmation.autre Mysql : insert multi-tables

Posté par  .
Étiquettes : aucune
0
7
sept.
2004
Bonsoir

Je souhaite insérer des données dans plusieurs tables de ma base à la fois. Est-ce possible, et si oui comment ?
Détail :
J'ai une table a contenant le champ id (auto_increment) et le champ nom
J'ai une table b contenant le champ id et le champ prenom.
(bien sûr c'est plus complexe sinon j'aurais mis prenom et nom en une table :)
Je souhaiterais donc faire une sorte de
INSERT INTO a, b SET a.nom = "NOM", b.prenom = "PRENOM", b.id = a.id

Merci d'avance...
  • # Pas possible

    Posté par  (site web personnel) . Évalué à 4.

    Tu ne peux pas insérer en meme temps dans 2 tables.
    Tu insères dans celui qui est en auto increment, tu recuperes le last_insert_id, tu inseres dans l'autre.
    • [^] # Re: Pas possible

      Posté par  . Évalué à 2.

      Heu qu'est-ce-que le last_insert_id ? c'est pas dans mon bouquin :(
      T'as un exemple ?
      Merci d'avance
      • [^] # Re: Pas possible

        Posté par  (site web personnel) . Évalué à 3.

        Tu fais un "SELECT LAST_INSERT_ID();" entre les 2 INSERT pour récupérer l'id
        • [^] # Re: Pas possible

          Posté par  . Évalué à 2.

          Merci pour ta promptitude :)
        • [^] # Re: Pas possible

          Posté par  . Évalué à 2.

          désolé, je connais pas bien mysql, donc c'est peut-être une question bête, mais si un insert vient se faufiler entre ton premier insert et ton select ?

          alors en fait je me répond tout seul (si jamais ça interesse quelqu'un
          d'autre) parce que j'ai trouvé dans la doc :
          http://dev.mysql.com/doc/mysql/en/InnoDB_locking_reads.html(...)

          SELECT LAST_INSERT_ID();

          The SELECT statement merely retrieves the identifier information (specific to the current connection). It does not access any table.


          je mets en gras

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.