Railsで2ちゃんねるみたいにスレッドごとに1から始まる一意の連番を振りたいと思っています。
↓のような形
スレッドID | コメント番号 | コメント |
---|---|---|
1 | 1 | hoge |
1 | 2 | fuga |
2 | 1 | foo |
1 | 3 | bar |
2 | 2 | fizzz |
3 | 1 | piyo |
before_createでコメント番号のMAX値を取ってきてプラス1加算したものを
コメント番号として設定する、という方法を使おうと思ったのですが、
これだと書き込み頻度が高くなり同時書き込みが発生してしまうと値が重複して変なことになってしまいます。
DB側でユニーク制約を設定する、というのは行ってみたのですが、
これだと整合性は保てても同時に書き込まれた際に致命的なエラーが発生してしまいます。
整合性を保ったまま、かつエラーを発生させない、となるとどのような実装方法になるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。