私は、ID列を持つレコードを挿入するストアドプロシージャを持っています。 挿入直後に@@ identityを使って子テーブルにレコードを挿入しています。ストアドプロシージャで@@ identityを使用するのは良いか悪いですか?
これは意味がありますか?
私は、ID列を持つレコードを挿入するストアドプロシージャを持っています。 挿入直後に@@ identityを使って子テーブルにレコードを挿入しています。ストアドプロシージャで@@ identityを使用するのは良いか悪いですか?
これは意味がありますか?
SCOPE_IDENTITYを使用します。 INSERTがID挿入を実行するトリガーを起動する必要がある場合、間違った値(つまり、トリガーの挿入によって生成された値)が@@ identityから取得されます。
@@ Identityは現在のスコープに限定されていないので、あなたのバージョンがこれを提供している場合は通常、SCOPE_IDENTITY
ほど良くありません。 別のテーブルの異なるspからのものであっても、最新のIDを取得します。
Pinal DaveはここIDENTITY
製品の簡単な説明があります。 http://blog.sqlauthority.com/2007/03/25/sql-server-identity-vs-scope_identity-vs-ident_current-retrieve-last-inserted-identity-of-record/
@@ IDENTITYは、任意のレコードのために挿入された最後のID値です。ユーザーの並行性が高くなると、間違ったID値になります。つまり、別の要求が挿入されたばかりの値が取得されます。
現在のスコープに最後に挿入されたID値には、SCOPE_IDENTITYを使用します。
はちょうどこの上で私のfavoriate artilceを追加する場合は、そのタイトルトリガビットのための「Identity Crisis」
+1ため、その後何もないため。 –