Récupérer l'id après un insert... [Résolu]

Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Dernière intervention
29 décembre 2005
- - Dernière réponse : _ben
Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Dernière intervention
29 décembre 2005
- 29 déc. 2005 à 11:25
Bonjour,

je souhaite insérer un nouvel enregistrement dans une table.

Il me faut récupérer l'id de cet enregistrement soit la valeur de la clé primaire lui correspondant.

J'utilise un TQuery pour ca, le TUpdateSQL est moins pratique pour moi
les données à insérer provenant de fichier et nom d'un dbcontrole(je ne
travaille pas avec un dbgrid et un datasource..etc).

Comment faire donc après l'insert....pour récupérer la valeur de la clé
primaire de cet enregistrement..existe t il une propriété du dataset ou
je peux l'avoir?





Si quelqu'un à une idée...
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
198
Date d'inscription
mercredi 26 novembre 2003
Dernière intervention
26 août 2009
3
Merci
salut, moi aussi j'ai eu le meme probleme que toi,
je fais ma requete insert into, et ensuite je fais une requete de selection ('select max(cle) as maxicle from matable')
C'est un peu le meme style que ce que t'as suggéré f0xi, a toi de voir...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de cs_deubal
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
mmm je suis pas expert en SQL sous delphi mais, pour ce que je sais en MySQL, une fois l'insertion faite, il suffit d'aller chercher l'entrée que l'on a ajouter pour recuperer son ID.

Si on as eu l'inteligence d'utilliser un ID en auto-increment, logiquement il suffit de recuperer le dernier ID enregistré et de lui ajouter 1.
MAIS! dans certain cas, selon la BDD, une valeur deja allouée et supprimée ne peut etre reutilisée.
par exemple si l'enregistrement 28 a ete supprimer et que c'été le dernier element ajouter, le prochain serat 29 et non 28.
alors que pourtant si on prend le dernier element (27) +1 (donc 28) on a un ID erroné.

dans tout les cas, il suffit simplement de sortir les Elements par l'ID et de recupperer le plus grand qu'il soit de type Int ou TimeStamp.

(syntaxe MySQL)

SELECT id FROM base ORDER BY id LIMIT 1 DESC

en gros : donne moi le dernier ID dans BASE par ordre descroissant (plus grand au plus petit)

cela devrais te donner l'ID du dernier element ajouter. Ce n'est peut etre pas la meilleure methode mais au moins elle fonctionne.

<hr size="2" width="100%">La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
Commenter la réponse de f0xi
Messages postés
6
Date d'inscription
dimanche 4 décembre 2005
Dernière intervention
29 décembre 2005
0
Merci
La question que je me pose c'est en fait de savoir si la requête insert
ne renvoie pas une valeur dans le dataset concernant la clé primaire si
il y en a une..car en php il existe une fonction mysql_id qui exécutée
après une requête de type insert permet de récupérer le nouvel id...



Je souhaiterais éviter d'avoir à faire une nouvelle requête....
Commenter la réponse de _ben

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.