SQL Server IDENTITYで自動的に連番を挿入することができます。

これは便利なのですが、
現在どの番号まで裁判されているかを見ることができません。

そんなIDENTITYの値を取得する方法をご紹介します。

方法は3つあります。

1、IDENT_CURRENT

IDENT_CURRENTは引数で指定した特定のテーブルについて全セッション、全スコープ対象に取得することができます。
トリガーなんかも対象になってしまいます。
でも、テーブルを特定することができます。

SELECT IDENT_CURRENT(‘table1’) as ID

IDを持つtable1とtable2がありtable1に値をインサートした際に、
table2に値がインサートされるトリガが有る場合。

上記コマンドを実行すると、
table1のIDの値を取得することができます。

2、@@IDENTITY

@@IDENTITYは全てのテーブルについて現在のセッション、全てのスコープを対象に取得することができます。

SELECT @@IDENTITY as ID

IDを持つtable1とtable2がありtable1に値をインサートした際に、
table2に値がインサートされるトリガが有る場合。

@@IDENTITYで取得できる値はtable2のIDの値です。

@@IDENTITY を信頼することはできません。 @@IDENTITY の代わりに、SCOPE_IDENTITY() 関数の構文を使用できます。

と、マイクロソフトのサイトに書いてありましたので、あまり使わないほうがいいのかもしれませんね。

3、SCOPE_IDENTITY

SCOPE_IDENTITYは全てのテーブルについて、現在のセッション、現在のスコープを対象に値を取得します。

SELECT SCOPE_IDENTITY() as ID

IDを持つtable1とtable2がありtable1に値をインサートした際に、
table2に値がインサートされるトリガが有る場合。

SCOPE_IDENTITYで取得できる値はtable1のIDの値です。

それぞれ、どんな値を取得したいかを考慮してご利用ください。