Viết là nguyên tử nhưng một gia số cũng yêu cầu đọc. Vì vậy, câu hỏi đặt ra là:Bạn có chắc việc đọc là an toàn, hay nói cách khác, bạn có chắc chắn một luồng khác đang thực hiện tăng dần sẽ không kết thúc với cùng một giá trị được tăng lên không? Tôi có nghi ngờ. Cách làm đúng 100% sẽ là.
-- 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...