La escritura es atómica, pero un incremento también requiere una lectura. Entonces, la pregunta es:¿está seguro de que la lectura es segura, en otras palabras, está seguro de que otro subproceso que realiza el incremento no terminará con el mismo valor que se incrementará? Tengo dudas. La forma 100% correcta de hacer esto sería.
-- begin transaction here
select counter from myCounters where counter_id = 1 FOR UPDATE;
-- now the row is locked and nobody can read or modify its values
update myCounters set counter = ? where id = 1;
-- set ? to counter + 1 programmatically
commit; -- and unlock...