- 239 名前:nobodyさん mailto:sage [2011/01/29(土) 13:25:51 ID:???]
- RailsでMySQLを使っているときのトランザクションについて教えてください。
Book.transaction do 処理1 処理2 end このようなコードを書いた場合、 処理1と処理2がいずれも実行されるか、いずれも実行されないか を保障するというのは理解できるのですが、 処理1と処理2の間に別プロセスがBookテーブルに変更を加えてしまうことはあり得ますか? 具体的には、Bookテーブルにcountというカラムがありまして この本を保持する人の人数を保持しています。 ユーザーからのあるアクションによって、複数のbookのcountを更新する必要があるのですが、 Aさんが更新中にBさんが更新してしまうと整合性が取れなくなってしまう問題に当たっています。 この更新処理を上のコードのトランザクションで囲めば解決されるのでしょうか?
|

|