Het schrijven is atomair, maar een toename vereist ook een leesbewerking. Dus de vraag is:weet je zeker dat het lezen veilig is, met andere woorden, weet je zeker dat een andere thread die de verhoging uitvoert, niet dezelfde waarde krijgt om te worden verhoogd? Ik heb twijfels. De 100% juiste manier om dit te doen zou zijn.
-- 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...