プライマリキーのIDENTITY(1,1)の患者テーブルがあるとします。 @@ Identityを使用することで、2人で同時に新しい患者を救うことができる競合状態をどう回避するのですか?明らかに、Patientsテーブルの重複したIDは作成されませんでしたが、挿入された患者のIDが別のテーブルのレコードを別の場所に更新する必要がある場合はどうなりますか?両方のレコードが同時に挿入された場合、@@ Identityが他のレコードのIDを取得しないことをどのように知ることができますか?競合状態のないSQL ServerでのIDの使用
これを避けるためのベストプラクティスはありますか?
JamesNT
まず、@@ IDENTITYではなくSCOPE_IDENTITY()を使用します。あなたはどんな競争状態を話していますか? 1つのインサートが勝ち、最初の行が得られ、次にもう1つのインサートが続きます。各インサートは独自のSCOPE_IDENTITY()値を取得しますが、一方のインサートが他方のインサートを取得することはできません。 –