In una tabella in cui ogni riga ha un contatore (solo un valore intero), devo ottenere il valore corrente e aumentarlo allo stesso tempo .
In effetti, voglio fare questo:
SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Ma fare questo in quanto due query ovviamente non è thread-safe: più processi che fanno la stessa cosa (sulla stessa riga) possono ottenere lo stesso valore del contatore. Ho bisogno che siano tutti univoci, quindi ogni processo otterrebbe il valore attuale effettivo e lo aumenterebbe di uno.
Posso pensare a una costruzione in cui implemento un blocco manuale per riga, ma mi chiedo se esiste un modo più semplice per farlo?