-
@@IDENTITY
すべてのスコープにわたって、現在のセッションの任意のテーブルに対して生成された最後のID値を返します。 ここでは注意が必要です 、スコープを超えているため。現在のステートメントの代わりに、トリガーから値を取得できます。
-
SCOPE_IDENTITY()
現在のセッションおよび現在のスコープ内の任意のテーブルに対して生成された最後のID値を返します。 一般的に使用したいもの 。
-
IDENT_CURRENT('tableName')
任意のセッションおよび任意のスコープで特定のテーブルに対して生成された最後のID値を返します。これにより、上記の2つが必要なものではない場合に備えて、値を取得するテーブルを指定できます(非常にまれ )。また、@ Guy Starbuckが述べたように、「レコードを挿入していないテーブルの現在のIDENTITY値を取得する場合は、これを使用できます。」
-
OUTPUT
INSERT
の句 ステートメントを使用すると、そのステートメントを介して挿入されたすべての行にアクセスできます。特定のステートメントを対象としているため、より簡単です 上記の他の機能より。ただし、少しより冗長です (テーブル変数/一時テーブルに挿入してからクエリを実行する必要があります)。ステートメントがロールバックされるエラーシナリオでも結果が得られます。とはいえ、クエリで並列実行プランを使用している場合、これは唯一の保証された方法です。 アイデンティティを取得するため(並列処理をオフにする以外)。ただし、前に実行されます トリガーであり、トリガーによって生成された値を返すために使用することはできません。