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
Publicité
Posté le 06-07-2006 à 17:25:49
pikti
I’ve done worse
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
mrbebert
Posté le 07-07-2006 à 00:53:41
Avec MySQL, c'est LAST_INSERT_ID
moi23372
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.
Sh@rdar
Ex-PhPéteur
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
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
Sh@rdar
Ex-PhPéteur
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)