requete imbriqué [SQL][Resolu] - SQL/NoSQL - Programmation
Marsh Posté le 21-03-2011 à 18:40:26
alcapone59 a écrit : Bonjour, |
Si ton SGBD autorise les transactions (ex :http://www.commentcamarche.net/for [...] ctions-sql)
alors un insert suivi d'un select max(ID) ... à l'intérieur d'une transaction et ça devrait le faire
Marsh Posté le 22-03-2011 à 08:16:16
Si c'est du SQL Server tu peux utiliser la clause OUTPUT qui fera pil ce que tu veux.
Marsh Posté le 22-03-2011 à 08:27:26
Bonjour et merci pour vos réponses.
J'utilise WAMP5 avec PHPmyAdmin.
Je vais regarder vos pistes.
Cordialement,
Marsh Posté le 22-03-2011 à 08:34:31
ReplyMarsh Posté le 22-03-2011 à 09:21:25
antac a écrit : si tu utilises PHP, tu peux trouver le dernier id insérer avec MYSQL_LAST_ID |
Non j'utilise Visual Basic 6 domage car j'avais trouvé mysql_insert_id(INSERT ...) qui aurait peu fonctionné
Marsh Posté le 22-03-2011 à 09:59:03
Bon au final je vais procéder par deux requête, j'aurais bien aimé optimisé si possible
L'insert puis la requete suivante :
SELECT id FROM ma_table ORDER BY id DESC LIMIT 1
Marsh Posté le 22-03-2011 à 10:01:36
ça c'est pas une bonne idée, si tu as eu d'autres insertions en parallèle, le résultat peut etre faussé
tu fais ton insertion , puis tu lances la requete SELECT LAST_INSERT_ID() qui va te retourner le dernier enregistrement inséré pour ta connection ( et pas pour les eventuels autres clients)
Marsh Posté le 22-03-2011 à 10:26:37
Bon je viens de tester et ca fonctionne parfaitement.
Par contre je ne vois pas comment je peux récupérer la valeur en VB6
Marsh Posté le 22-03-2011 à 14:20:51
SELECT LAST_INSERT_ID() as NewID
En VB, tu récupères le champ "NewID"...
Marsh Posté le 22-03-2011 à 14:52:54
Humm étrange, j'ai déjà testé mais ca ne marche pas, ca me m'était que le NewID était inconnu.
Je ferais d'autre test demain.
Encore merci
Marsh Posté le 22-03-2011 à 15:07:56
Bon ca fonctionne, j'avais du faire une erreur au paravent
Un grand merci à vous tous.
Marsh Posté le 21-03-2011 à 16:26:12
Bonjour,
Je souhaiterais récupérer l'Id lors de la création d'une nouvelle ligne dans une table par requête imbriqué.
Exemple:
Je possède une table image ayant comme champs ID int, text1 Text, text2 Text
Lors de mon INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');
Il auto incrémente le champ ID.
J'aimerais récupérer cette ID par une requête Imbriqué, savez vous comment faire svp?
J'ai essayé :
Select ID AS INSERT INTO image (ID, text1, text2) VALUES ('','valeur1','valeur2');
Mais bien sur ca ne fonctionne pas
Merci
Message édité par alcapone59 le 22-03-2011 à 15:08:17