La scrittura è atomica ma un incremento richiede anche una lettura. Quindi la domanda è:sei sicuro che la lettura sia sicura, in altre parole, sei sicuro che un altro thread che esegue l'incremento non finirà con lo stesso valore da incrementare? Ho dei dubbi. Il modo corretto al 100% per farlo sarebbe.
-- 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...