Penulisan bersifat atomik tetapi peningkatan juga membutuhkan pembacaan. Jadi pertanyaannya adalah:Apakah Anda yakin pembacaan aman, dengan kata lain, apakah Anda yakin utas lain yang melakukan kenaikan tidak akan berakhir dengan nilai yang sama untuk ditambahkan? Saya memiliki keraguan. Cara yang 100% benar untuk melakukan ini adalah.
-- 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...