Skrivningen er atomart, men en stigning kræver også en læsning. Så spørgsmålet er:Er du sikker på, at læsningen er sikker, med andre ord, er du sikker på, at en anden tråd, der udfører stigningen, ikke ender med den samme værdi, der skal stige? Jeg er i tvivl. Den 100 % korrekte måde at gøre dette på ville være.
-- 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...