掲示板の同時投稿 - PHPプロ!Q&A掲示板
キーワード / 掲示板  
DBへ記事を登録するときにその記事のIDを、DBのIDフィールドの最大値+1で確定してから
DBへ登録するのですが
コンマ数秒のレベルまで同時に登録をした場合、IDが重複してしまう現象が発生します
IDをprimary keyにすればよいのでしょうが、テストでテーブルをコピーして設定しようとして
IDの重複エラーが出たので設定できません
また同時に登録した場合どうなるのかもわかりません(多分DBからエラーを返す?)
既に数万件のデータがあり、重複のチェックと修正をするのは厳しいのでできれば今後発生しないように
PHP上で対応したいと考えています
IDの取得タイミングを登録処理のなるべく最後にもっていったりしましたが
それでもコンマ数秒まで同時に登録した場合の根本的対策にはなっていないと思います
他に考えたのは別テーブルに登録処理中のフラグを持たせ、フラグがたっている場合は登録処理を中断・待機させる
などですが、これもほとんど同時に登録処理をした場合は同じ結果になるだろうと判断しましたのでやめました
他に何かいい方法はないものでしょうか
この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。





ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。