行がまだ存在しない場合はテーブルに行を挿入する必要があり、ストアドプロシージャを使用してこれを行う必要があります。したがって、行がすでに存在するかどうかを確認するために選択し、その後に挿入を続ける必要があります。私が避けたいのは、ストアドプロシージャの2人の呼び出し元が行が存在しないことを確認し、両方が行を挿入しようとする競合状態です。
これを解決するための私の最初の考えは、テーブルをロックすることですが、残念ながらLOCK TABLE
、ストアドプロシージャで発行することはできません。
クライアント(C#)で重複キー挿入例外をトラップしないようにしたい。
テーブルまたは代替ソリューションをロックする方法はありますか?