Scope_Identity()、Identity()、@@Identity、Ident_Current() の違いは何ですか? 質問する

Scope_Identity()、Identity()、@@Identity、Ident_Current() の違いは何ですか? 質問する

Scope_Identity()、、、はすべて ID 列の値を取得するIdentity()ことはわかっていますが、その違いを知りたいです。@@IdentityIdent_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()関数を使用します。

おすすめ記事