En una tabla donde cada fila tiene un contador (solo un valor entero), necesito obtener el valor actual y aumentarlo al mismo tiempo .
Efectivamente, quiero hacer esto:
SELECT counter FROM table WHERE id=123
UPDATE table SET counter=counter+1 WHERE id=123
Pero hacer esto como dos consultas obviamente no es seguro para subprocesos: múltiples procesos que hacen lo mismo (en la misma fila) pueden obtener el mismo valor de contador. Necesito que todos sean únicos, por lo que cada proceso obtendría el valor actual real y lo aumentaría en uno.
Puedo pensar en una construcción donde implemente un bloqueo manual por fila, pero me pregunto si hay una manera más fácil de hacerlo.