{Mysql} Récupérer ID d'un enregistrement
gaerebut
Messages postés
1060
Statut
Membre
-
demattos Messages postés 2 Statut Membre -
demattos Messages postés 2 Statut Membre -
Bonjour,
je souhaite récupérer l'ID d'un enregistrement qui vient de se réaliser sans refaire une requête !
Existe t-il un moyen de sauvegarder cet ID précédement créé ?
En gros, je créé une ligne quelque part puis j'ai besoin de l'ID de cette ligne pour l'insérer dans un nouvel enregistrement!
Merci
je souhaite récupérer l'ID d'un enregistrement qui vient de se réaliser sans refaire une requête !
Existe t-il un moyen de sauvegarder cet ID précédement créé ?
En gros, je créé une ligne quelque part puis j'ai besoin de l'ID de cette ligne pour l'insérer dans un nouvel enregistrement!
Merci
A voir également:
- {Mysql} Récupérer ID d'un enregistrement
- Comment recuperer un message supprimé sur whatsapp - Guide
- Comment récupérer un compte facebook piraté - Guide
- Récupérer mon compte facebook désactivé - Guide
- Id telephone - Guide
- Comment recuperer une video sur youtube - Guide
3 réponses
Bonjour gaerebu
Petit conseil : décrit verbalement tous les détails de ce que tu veux faire. Ensuite, la solution technique sera plus facile à trouver, mais bon on va prendre quelques hypothèses :
Je suppose que :
1) la table dans laquelle tu viens d'insérer un élément est de type auto-increment
2) La table se nomme MA_TABLE et possède une colonne nommée ID
3) La deuxième table, MA_TABLE_HISTO a une colonne ID, une colonne ID_MA_TABLE qui devra contenir l'ID qui a été inséré dans MA_TABLE, une colonne DATE_INSERT, et un commentaire.
Plusieurs solutions sont possibles, mais ça dépend aussi de la façon avec laquelle tu accède à la base :
Cas n° 1 : Il n'y a qu'un seul utilisateur à la fois qui accède à la base : solution triviale
Il te suffit de faire une requête :
Ce qui te retournera la dernière valeur saisie puisqu'on est autoincrement.
Cas n° 2 plus propre, on utilise la fonction mysql ; LAST_INSERT_ID()
comme ci-dessous :
Le problème est que, comme dans le premier cas, si quelqu'un insère entre temps quelque chose dans une table, l'id peut-être faux.
Par contre, je pense que si tu place ces deux appels dans une transaction, tu ne devrait pas avoir de problème
A noter : si tu travaille en PHP, il existe une fonction PHP nommée mysql_insert_id() qui fait n gros la m^me chose, sauf qu'elle peut retourner une valeur fausse si l'ID est un BIGINT et pas un INT.
Il y a aussi des méthode utilisant un trigger mais inutile de chercher trop complexe, surtout si tu n'es pas un chevronné des BD?
Je ne prétend pas que c'est la solution absolue, mais tu as une piste, continue !
Petit conseil : décrit verbalement tous les détails de ce que tu veux faire. Ensuite, la solution technique sera plus facile à trouver, mais bon on va prendre quelques hypothèses :
Je suppose que :
1) la table dans laquelle tu viens d'insérer un élément est de type auto-increment
2) La table se nomme MA_TABLE et possède une colonne nommée ID
3) La deuxième table, MA_TABLE_HISTO a une colonne ID, une colonne ID_MA_TABLE qui devra contenir l'ID qui a été inséré dans MA_TABLE, une colonne DATE_INSERT, et un commentaire.
Plusieurs solutions sont possibles, mais ça dépend aussi de la façon avec laquelle tu accède à la base :
Cas n° 1 : Il n'y a qu'un seul utilisateur à la fois qui accède à la base : solution triviale
Il te suffit de faire une requête :
SELECT MAX(MA_TABLE.ID) FROM MA_TABLE
Ce qui te retournera la dernière valeur saisie puisqu'on est autoincrement.
Cas n° 2 plus propre, on utilise la fonction mysql ; LAST_INSERT_ID()
comme ci-dessous :
INSERT INTO MA_TABLE (NOM) VALUES ('PREMIER');
INSERT INTO HISTO_MA_TABLE (ID_MA_TABLE, COMMENTAIRE) VALUES(LAST_INSERT_ID(),'Commentaire du premier' );
Le problème est que, comme dans le premier cas, si quelqu'un insère entre temps quelque chose dans une table, l'id peut-être faux.
Par contre, je pense que si tu place ces deux appels dans une transaction, tu ne devrait pas avoir de problème
A noter : si tu travaille en PHP, il existe une fonction PHP nommée mysql_insert_id() qui fait n gros la m^me chose, sauf qu'elle peut retourner une valeur fausse si l'ID est un BIGINT et pas un INT.
Il y a aussi des méthode utilisant un trigger mais inutile de chercher trop complexe, surtout si tu n'es pas un chevronné des BD?
Je ne prétend pas que c'est la solution absolue, mais tu as une piste, continue !