A gravação é atômica, mas um incremento também requer uma leitura. Então a pergunta é:você tem certeza de que a leitura é segura, ou seja, você tem certeza de que outra thread fazendo o incremento não terminará com o mesmo valor a ser incrementado? Tenho dúvidas. A maneira 100% correta de fazer isso seria.
-- 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...