問題を詳しく説明しましょう。
export というテーブルがあります。フィールドjob_noがあります。
ユーザーが来てこのクエリを実行すると、
select max(job_no) as Last_Job from jobs
結果は、テーブルの最後のジョブ番号である A005 です。
PHP 側で、ユーザーが入力して送信するエントリ フォームに A006 を表示します。
フォームの job_no フィールドは読み取り専用で、ユーザーは変更できません。
ここで、複数のユーザーが同時にフォームに入力し、それぞれに A006 が表示され、フォームを送信するときに A006 がレコードと共に送信されると、問題が発生します。
これは重複しており、必須ではありません。
この状況を防ぐための解決策は何ですか。3つの解決策がありますが、より良い解決策があるかどうか知りたいです。
解決策 1
ユーザー ID を使用してジョブ番号を user_entry フォームに挿入し、それをユーザーに表示します。
次に、ユーザーがフォームを送信すると、フォームを更新します。
Draback は、ユーザーがフォームの送信をキャンセルした場合、job_no は役に立たないようです。
解決策 2
各ユーザーにジョブ番号を表示し、送信時にジョブ番号を確認してインクリメントし、ジョブ番号が既に割り当てられていることをユーザーに伝えて、次の番号が割り当てられるようにします。
ユーザーにプロンプト メッセージを表示しないと、ジョブ番号が A006 で、データベースでは A007 であるという印象を受けます。
また、setIntervalでajaxリクエストを実行すると、サーバーに負荷がかかり、重複する可能性があります。
これは、ジョブ番号をユーザーに表示するために必要です。では、この状況でのより良いアプローチは何ですか。または、この問題の代替手段はありますか?