- 680 名前:nobodyさん mailto:sage [2011/06/06(月) 12:07:40.08 ID:???]
- 例えば、ユーザのログイン回数なんかを加算する際、
現在の 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側で加算させる方法はないでしょうか?
|

|