2ちゃんねるのようにスレッドごとに一意の連番が付与されるような機能を実現したいと思っているのですが、
良い方法が思いつきません。
書き込みテーブル
|ID(主キー、自動連番)|スレッドID|書き込み番号|内容|
|:--|:--:|--:|
|1|1|1|hogehoge|
|2|1|2|fugafuga|
|3|1|3|piyopiyo|
|4|2|1|foofoo|
|5|2|2|barbar|
|6|3|1|fizfiz|
|7|3|2|bazbaz|
|8|3|3|dardar|
パッと思いついたのは
sql
1INSERT INTO 書き込み(スレッドID, 書き込み番号, 内容) 2VALUES (1, (SELECT MAX(書き込み番号) + 1 FROM 書き込みテーブル WHERE スレッドID=1), 'nyaaa');
こんな感じにSQL中でグループの書き込み番号MAX値+1を取得する方法ですが、
これだけでは場合によっては重複などの不整合を起こす可能性があるように思えます。
ユニーク制約で弾くことはできそうですが、できればエラー自体発生させたくありません。
良い感じに実現する方法はあるでしょうか・・・
お知恵を貸していただけると幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/08/27 01:26