1. ホーム
  2. sql

[解決済み】Scope_Identity()、Identity()、@Identity、Ident_Current()の違いは何ですか?)

2022-04-03 14:04:28

質問

知っている Scope_Identity() , Identity() , @@Identity および Ident_Current() はすべてidentityカラムの値を取得しますが、その違いを知りたいのです。

私が抱いている論争の一つは、上記のこれらの関数に適用されるスコープとは何を意味するのか、ということです。

また、それらを使用するさまざまなシナリオの簡単な例も欲しいのですが?

どのように解決するのですか?

  • その @@identity 関数は、同じセッションで最後に作成された ID を返します。
  • scope_identity() 関数は、同じセッションと同じスコープで最後に作成された ID を返します。
  • ident_current(name) は、特定のテーブルやビューに対して任意のセッションで最後に作成された ID を返します。
  • identity() 関数は、ID を取得するために使われるのではなく、ID を select...into のクエリを実行します。

セッションは、データベース接続です。スコープは、現在のクエリまたは現在のストアドプロシージャです。

という状況は scope_identity()@@identity 関数はクエリによって作成されたIDを返しますが scope_identity() 関数はトリガーによって作成されたIDを返します。

つまり、通常であれば @@identity 関数を使用します。