質問:
Web サイトの 2 人の異なる管理者ユーザーが同じ顧客 ID を持つ顧客レコードを作成できないようにするにはどうすればよいですか?
背景情報:
私が使用している Web サイトでは、次のことを行うルーチン/メソッドに基づいて、「顧客番号」と呼ばれる番号が自動生成されます。
- cust_number_range テーブルを使用して、数値の許容範囲をチェックします。
- 顧客テーブルから使用中の最大数を割り出します。
- 「新規顧客の作成」フォームに次に利用可能な番号を表示します。
- 送信ボタンをクリックすると、レコードを保存する前に、顧客テーブルを再度チェックして、次に利用可能なものとして計算した数が使用されていないことを確認します。それでも問題がなければ、データベースに保存します。
データベースは次のようになります。
customer table
=====================
id integer - primary key
custnumber integer
fname varchar(255)
lname varchar(255)
cust_number_range
====================
lower_range integer
upper_range integer
id integer - primary key
私が遭遇した問題は、2 人の管理者がまったく同時に新しい顧客レコードの「送信」をクリックすると、システムが同じ顧客番号を持つ 2 つのレコードを作成することです。ここに私が持っているいくつかの質問があります:
- custnumber フィールドを pk の一部にすることはオプションですか? つまり、それは本当に「適切な」解決策ですか?
- 問題を解決するために他にどのような方法が必要ですか?
ありがとう。