Scope_Identity()
、、、はすべて ID 列の値を取得するIdentity()
ことはわかっていますが、その違いを知りたいです。@@Identity
Ident_Current()
私が抱えている論争の一部は、上記の関数に適用されるスコープとはどういう意味なのかということです。
また、それらを使用するさまざまなシナリオの簡単な例も知りたいです。
ベストアンサー1
- この
@@identity
関数は、同じセッションで作成された最後の ID を返します。 - この
scope_identity()
関数は、同じセッションおよび同じスコープで作成された最後の ID を返します。 ident_current(name)
任意のセッションで特定のテーブルまたはビューに対して作成された最後の ID を返します。- この
identity()
関数は ID を取得するために使用されるのではなく、クエリで ID を作成するために使用されますselect...into
。
セッションはデータベース接続です。スコープは現在のクエリまたは現在のストアド プロシージャです。
scope_identity()
関数と関数が異なる状況になるの@@identity
は、テーブルにトリガーがある場合です。レコードを挿入するクエリがあり、トリガーによって別のレコードがどこかに挿入される場合、 関数はscope_identity()
クエリによって作成された ID を返しますが、 関数@@identity
はトリガーによって作成された ID を返します。
したがって、通常はscope_identity()
関数を使用します。