私は長い間、ここで何が問題になっているかを調べようとしています。私は1つのINSERTを持っているストアドプロシージャを持っています。多くのレコードで、この挿入のscope_identityが正常に返されました。しかし、ほんのわずかのためにnullを返すので、次の挿入はエラーで失敗します(この値は他のテーブルではnullにできません)。SCOPE_IDENTITY()は、レコード数が少ない場合にのみnullを返します。
ログには、このストアドプロシージャの複数の要求が同時に(1 ms)入ってきたことがあります。
私は複数のリクエストが入って来たと同時に、テーブル内で一意のIDのギャップを見るようにIDが生成されていると思います。
ことがSCOPE_IDENTITYですべての問題(だろうか)?
私は、並行性が問題になる疑う:
SQLトランザクションのためにこの便利なリンクを使用します。 'SCOPE_IDENTITY()'は、おそらくエラーのために行が挿入されていなければ 'NULL'のままです。 –
右。私の2番目の挿入ステートメントは、私のログにあるエラーをスローします。しかし、最初のインサートはエラーを投げたことはありません。しかし、scope_identityはnullです。おそらく私はinsertステートメントをもっと詳しく見る必要があります。 – Shrav
Scope_identityは、現在のスコープ内の最後のinsert文のIDを格納します。最後の挿入ステートメントが成功しませんでした。必要に応じて、挿入後にスコープIDを取得します。 –