J'ai une question MySQL qui, je pense, doit être assez simple. Je dois renvoyer le DERNIER ID INSÉRÉ de table1 lorsque j'exécute la requête MySql suivante:
INSERT INTO table1 (title,userid) VALUES ('test',1);
INSERT INTO table2 (parentid,otherid,userid) VALUES (LAST_INSERT_ID(),4,1);
SELECT LAST_INSERT_ID();
Comme vous pouvez comprendre que le code actuel renverra simplement l'ID DERNIER INSERT de table2 au lieu de table1, comment puis-je obtenir l'ID de table1 même si je l'insère dans table2 entre?
mysql
insert
last-insert-id
Martin
la source
la source
Puisque vous avez en fait stocké le LAST_INSERT_ID () précédent dans la deuxième table, vous pouvez l'obtenir à partir de là:
la source
Cela vous permet d'insérer une ligne dans 2 tables différentes et crée également une référence aux deux tables.
la source
J'ai eu le même problème dans bash et je fais quelque chose comme ça:
qui fonctionne bien :-) Mais
ne marche pas. Parce qu'après la première commande, le shell sera déconnecté de mysql et à nouveau connecté pour la deuxième commande, puis la variable @last_insert_id n'est plus définie. Ma solution est:
Peut-être que quelqu'un cherche une solution un bash :-)
la source
LAST_INSERT_ID
disponible uniquement pour la connexion active.#mysq
-command connect pour chaque commande. Vous pouvez vous connecter avec lamysql
commande au serveur et insérer vos requêtes, ou vous pouvez créer un fichier texte et vous lamysql
commande avec redirection à partir du fichier txt akamysql [connection option] < txt.file
Nous n'avons qu'une seule personne qui saisit les enregistrements, j'exécute donc la requête suivante immédiatement après l'insertion:
Cela récupère le dernier identifiant de la base de données.
la source
Pour aucune solution InnoDB: vous pouvez utiliser une procédure
don't forgot to set the the delimiter for storing the procedure with ;
Et vous pouvez l'utiliser ...
la source
Il serait possible de sauvegarder la variable last_id_in_table1 dans une variable php pour l'utiliser plus tard?
Avec ce last_id, je dois attacher des enregistrements dans une autre table avec ce last_id, j'ai donc besoin de:
1) Faites un INSERT et récupérez le last_id_in_table1
2) Pour toutes les lignes indéterminées d'une autre table, METTRE À JOUR ces lignes avec le last_id_insert généré dans l'insertion.
la source
Au lieu de cela,
LAST_INSERT_ID()
essayez d'utiliser celui-cila source
Pour le dernier et l'avant-dernier:
la source
Juste pour ajouter pour Rodrigo post, au lieu de LAST_INSERT_ID () dans la requête, vous pouvez utiliser SELECT MAX (id) FROM table1;, mais vous devez utiliser (),
la source
Si vous avez besoin d'avoir de mysql, après votre requête, le dernier identifiant auto-incrémentiel sans autre requête, insérez votre code:
la source