Dans un tableau où chaque ligne a un compteur (juste une valeur entière), j'ai besoin d'obtenir la valeur actuelle et de l'augmenter en même temps .
Effectivement, je veux faire ceci:
SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Mais faire cela comme deux requêtes n'est évidemment pas thread-safe: plusieurs processus faisant la même chose (sur la même ligne) peuvent obtenir la même valeur de compteur. Je leur ai besoin de tout être unique, de sorte que chaque processus obtiendrait la réelle valeur actuelle et l' augmenter par un.
Je peux penser à une construction où j'implémente un verrou manuel par ligne, mais je me demande s'il y a un moyen plus simple de le faire?