0

PHP mysql を使用して請求書番号を生成しています。

私の一意の ID は、「vend/year/id/order_no」という形式になります。ここで、

vend は文字列です

年は現在の年です

ID は vendor_id です

order no is : 他のテーブル(注文テーブル)から vender_id で注文をカウントし、1 ずつ増やします。

ユーザーが「注文」Webページを開くと、ユーザーがフォームに入力してフォームを送信する前に、この生成されたIDを表示する必要があるため、最初にIDを生成する必要がありますが、挿入されません。

ユーザーが 2 つのタブで Web ページを開くと、ロジックに従って、両方の Web ページに同じ ID が表示されます。しかし、ユーザーが両方のフォームを送信しようとすると、最初の送信は一意の制約に従って受け入れられ、2 番目のクエリは失敗しますが、それは望ましくありません。これはベンダー ベースの作業であり、10 万人のユーザーがそのテーブルにアクセスするため、テーブルにロックを作成できません。また、彼が 2 つのタブで Web ページを開くのを止めることもできません。これを維持する最良の方法は何ですか。

4

2 に答える 2

0

主なアプローチは 2 つあります。

1) 請求書フォームが開かれたときに一意の ID を予約します。これは、最後に予約された ID をデータベースのどこかに保存することで実行できます。1 つの利点は、開いているウィンドウごとに一意の ID が割り当てられることですが、提出されていない請求書はすべて「無駄な」ID になります。これらの「無駄な」IDを使用するか、単に無視するメカニズムを持つことができます。

2) 保存時に ID の有効性をチェックし、自動的に更新するか、ユーザーに許可を求めます。これはおそらく迷惑になる可能性があります。

私はアプローチを好む1)

于 2013-07-30T16:53:04.377 に答える