|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : janvier 2003 Messages : 32 ![]() |
Bonjour,
J'ai une table "table_chrono" qui ne contient qu'une seule colonne "chrono" et qu'un seul enregistrement de type entier, qui est incrémenté par une requête UPDATE dans mon code PHP. J'ai donc quelque chose de ce type dans mon code : Code :
$q = mysql_query("UPDATE table_chrono SET chrono=chrono+1"); - Faire un SELECT juste après mon UPDATE, mais dans ce cas si un autre UPDATE a été effectué entre temps, je ne récupèrerai pas la bonne valeur ; - Faire un LOCK sur la table "table_chrono" avant le UPDATE, puis faire un SELECT et faire un UNLOCK ensuite, mais je n'ai pas les droits pour faire un LOCK ; - Modifier mon champ "chrono" en auto_incrément et faire des INSERT plutôt que des UPDATE pour récupérer la valeur avec "mysql_insert_id()", mais je me retrouverai avec des tonnes d'enregistrements qui ne servent pas et il faudra mettre en place un système de purge. Bref, existe-t-il un moyen auquel je n'ai pas pensé ? Est-il possible de récupérer la valeur modifiée sans faire un deuxième requête ? Merci ! |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() ![]() Sébastien AlfaiateDéveloppeur Web Inscription : janvier 2007 Messages : 1 329 ![]() |
Une autre solution serait de faire un SELECT avant de faire l'update.
Faire l’incrémentation en PHP et enfin updater avec la valeur obtenue en PHP. Par contre, si le script s’exécute 2 fis en même temps ya des chances pour que il n'y ai que une incrémentation de 1 au lieu de 2 au final. Apres sinon, tu peux peut être regarder du coté des transactions.
__________________
Zend Certified Engineer PHP 5.3 « Crois-tu comprendre le monde juste en matant le 20H Ou connaître l'histoire en ayant lu que l'angle des vainqueurs ? » Keny Arkana |
|
00
|
Copyright © 2000-2012 - www.developpez.com