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の値です。
それぞれ、どんな値を取得したいかを考慮してご利用ください。
I think you have noted some very interesting points , appreciate it for the post. ceaggeebfcee