2つの列を持つテーブルがあります
key -> Primary Key, auto incremented
reqNumber -> This is a custom generated value
reqNumber は、年/月/日/数字の形式で構成されます。number は、その日にリクエストが行われた回数です。たとえば、今日 3 つのリクエストが行われ、昨日 2 つのリクエストが行われた場合、テーブルは次のようになります。
key reqNumber
1 2013/07/16/001
2 2013/07/16/002
3 2013/07/17/001
4 2013/07/17/002
5 2013/07/17/003
私が抱えている問題は、複数のユーザーが同時に保存することがあります。保存を行うプロシージャは、最初に今日作成された数をチェックし、それに 1 を追加します。したがって、上記の場合、今日作成されたのは 3 であるため、次は 4 になります。その後、挿入を行います。
しかし、2 人のユーザーが同時に保存を押すと、両方とも 4 になります。つまり、挿入が発生すると、2013/07/17/004 が 2 回得られます。
SQLまたは.Netでこれを回避する方法はありますか? ロックは唯一の方法ですか?ロックはパフォーマンスを低下させますか?