Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : récupérer l'id après un insert... [ Archives / Bases de données ] (_ben)

mercredi 28 décembre 2005 à 22:13:39 | récupérer l'id après un insert...

_ben

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...


jeudi 29 décembre 2005 à 02:13:55 | Re : récupérer l'id après un insert...

f0xi

Membre Club Administrateur CodeS-SourceS
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.



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.


jeudi 29 décembre 2005 à 09:49:13 | Re : récupérer l'id après un insert...

deubal

Réponse acceptée !
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...

jeudi 29 décembre 2005 à 11:25:53 | Re : récupérer l'id après un insert...

_ben

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....




Cette discussion est classé dans : récupérer, insert, enregistrement, insérer, id


Répondre à ce message

Sujets en rapport avec ce message

Récupérer la clé d'un enregistrement [ par freeman44 ] Alors voila : J'exécute une requête SQL lors du clik sur un bouton: "Insert into tblEvaluateur values(nomEvaluateur, prenomEvaluateur)" Ca marche tres comment récupérer l'id d'un enreg d'une table [ par dsamcawfreve ] bonjour, voici ma problématique : j'ai une table "jouets" avec les champs suivants :j_id : autoincj_libel :string(100) dont 2 enreg :1 - CAMION clé étrangère [ par csandrine ] j'ai insérer un enregistrement dans ma table interprete(num_interprete, nom) . Je dois ensuite insérer un nouvel enregistrement dans la tablecd(num_cd dbgrid [ par houeg ] bonjour,quelqu'un peut il m'expliquer comment faire pour récupérer l'enregistrement en cours de sélection (par un utilisateur) dans un DBGrid ?je ne v dbgrid [ par houeg ] bonjour,quelqu'un peut il m'expliquer comment faire pour récupérer l'enregistrement en cours de sélection (par un utilisateur) dans un DBGrid ?je ne v MySQL & DBExpress: Last_Insert_Id() [ par pfabien ] Bonjour,Je rencontre un problème avec DBexpress et MySQL pour récupérer l'enregistrement qui vient d'être inséré dans une table. La requete 'SELECT LA Comment récupérer un nom de fichier affiché dans un ShellListView ? [ par denji ] Bonjour à tousvoila, je n' arrive pas à récupérer les nom des fichiers affichés dans un ShellListView.l'instruction : ShellListView.Item[i].caption ne Recherche de code pour jeu d'enregistrement [ par clemot ] Salut je recherche un exemple ou des exemples de code pourun jeu d'enregistrement à partir de TDBCtrlGrid et de stringgrid pouyr enregistrer des donn Obtenir la valeur de l'enregistrement [ par Frank19 ] Bonjour, jaimerais avoir les valeurs de l'enregistrement sur le quel je suis positionné avec un Query ... voici mon code : Query_connection.SQL.Cle Requete pas si compliqué !!! [ par vagabon ] Bonjour,J'ai 2 tables : Joueurs (Id,Nom)et Matchs (Id, idjoueur1, idjoueur2, score1, Score2)je veux afficher les matchs avec le nom des joueurs (et pa


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.