{Mysql} Récupérer ID d'un enregistrement
Fermé
gaerebut
Messages postés
1017
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
-
22 sept. 2009 à 10:34
demattos Messages postés 2 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 1 janvier 2015 - 1 janv. 2015 à 16:37
demattos Messages postés 2 Date d'inscription jeudi 1 janvier 2015 Statut Membre Dernière intervention 1 janvier 2015 - 1 janv. 2015 à 16:37
A voir également:
- {Mysql} Récupérer ID d'un enregistrement
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
- Récupérer mon compte facebook désactivé - Guide
3 réponses
CaPiT
Messages postés
609
Date d'inscription
lundi 7 janvier 2008
Statut
Membre
Dernière intervention
21 avril 2010
51
22 sept. 2009 à 11:41
22 sept. 2009 à 11:41
Bonjour.
mysql_insert_id(); (Si tu parles de php)
mysql_insert_id(); (Si tu parles de php)
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 !
demattos
Messages postés
2
Date d'inscription
jeudi 1 janvier 2015
Statut
Membre
Dernière intervention
1 janvier 2015
1 janv. 2015 à 16:37
1 janv. 2015 à 16:37
Comme ça vous pouvez récupérer tous les champs de votre base de données. ;-)
SELECT * FROM tbl_etc WHERE id=LAST_INSERT_ID();
Bien à vous !
DeMattos
SELECT * FROM tbl_etc WHERE id=LAST_INSERT_ID();
Bien à vous !
DeMattos