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

_ben 6 Messages postés dimanche 4 décembre 2005Date d'inscription 29 décembre 2005 Dernière intervention - 28 déc. 2005 à 22:13 - Dernière réponse : _ben 6 Messages postés dimanche 4 décembre 2005Date d'inscription 29 décembre 2005 Dernière intervention
- 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
cs_deubal 198 Messages postés mercredi 26 novembre 2003Date d'inscription 26 août 2009 Dernière intervention - 29 déc. 2005 à 09:49
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...

Merci cs_deubal 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_deubal
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 29 déc. 2005 à 02:13
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
_ben 6 Messages postés dimanche 4 décembre 2005Date d'inscription 29 décembre 2005 Dernière intervention - 29 déc. 2005 à 11:25
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.