11/06/06 12:07:40.08
例えば、ユーザのログイン回数なんかを加算する際、
現在の user.login_count が 3 だった場合、
user.login_count+=1
user.save
みたいにすると、発行されるSQLが
update users set login_count = 4 where id = 1;
みたいになってしまいます。
update users set login_count = login_count + 1 where id = 1;
とSQL側で演算しないとレースコンディションが発生する可能性が高くなると思います。
select for update で読み取りロックをかける方法も考えましたが、
新しい問題を起こす可能性の方が高いのでやりたくありません。
こういう場合、SQL側で加算させる方法はないでしょうか?