Récupérer valeur de la variable qui incremente

Récupérer valeur de la variable qui incremente - SQL/NoSQL - Programmation

Marsh Posté le 06-07-2006 à 17:25:49    

Bonjour à tous,  
 
J'aimerais savoir s'il est possible de récupérer, lorsque je fais un INSERT, la valeur de la variable ID, contenue dans ma table et qui en fait est incrémenté automatiquement à chaque insertion (c'est ma clé primaire).
 
Merci

Reply

Marsh Posté le 06-07-2006 à 17:25:49   

Reply

Marsh Posté le 06-07-2006 à 21:09:22    

En SQL Server, après l'insert tu peux récupérer l'increment avec @@identity :)
 
edit : je ne connais pas les équivalences sur d'autres sgbd sinon un select max(id)


Message édité par pikti le 06-07-2006 à 21:10:31
Reply

Marsh Posté le 07-07-2006 à 00:53:41    

Avec MySQL, c'est LAST_INSERT_ID [:proy]

Reply

Marsh Posté le 08-07-2006 à 12:24:10    

je pense de tt façon que ce genre de truc ne marche quand même pas super avec les concurences d'accès.  
Le mieux c'est de locker la table avant l'insert, insérer le tuple, selectionner le dernière ID et faire un beau COMMIT. ça assure au moins la concurence d'accès dans les SGBD qui n'assure pas une bonne concurence d'accès.  

Reply

Marsh Posté le 08-07-2006 à 12:46:58    

non, ça fonctionne très bien vu que c'est justement fait pour ça ;)
 
EDIT : en tout cas sur mysql


Message édité par Sh@rdar le 08-07-2006 à 12:47:23

---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 08-07-2006 à 13:41:13    

oui mais sachant que MySQL gère les accès concurents comme un pied, si deux insertions se font en même temps, il risque de se peter la gueule en renvoyant le mauvais. Et c'est surtout valable pour MySQL

Reply

Marsh Posté le 08-07-2006 à 14:08:55    

non justement
 

Citation :


 For LAST_INSERT_ID(), the most recently generated ID is maintained in the server on a per-connection basis. It is not changed by another client. It is not even changed if you update another AUTO_INCREMENT column with a non-magic value (that is, a value that is not NULL  and not 0).


 
c'est utilisé depuis des lustres, je n'ai jamais vu un problème avec ça (de visu ou sur le web)


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed