IDENTITY列はテーブル内でユニークな値を生成することが保障される便利な列です。今回はIDENTITYに関する便利な関数のサンプルを掲載します。

動作確認は SQL Server 2005 Developer Edition を使用しています。

1. IDENTITY情報を取得する

直前のINSERT文で作成されたIDENTITY列の値を取得するには SCOPE_IDENTITY() を使用します。 また、テーブルで最後に作成されたIDENTITY列の値を取得するにはIDENT_CURRENT 関数を使用します。IDENTITY列のシードや増分値を取得するにはIDENT_INCR, IDENT_SEEDを使用します。

-- IDENTITY 用の関数
-- 指定されたテーブルの最後に生成されたIDENTITY値を取得する
SELECT IDENT_CURRENT('dbo.Article')

-- IDENTITY列のシード、増加値を取得する
SELECT IDENT_INCR('dbo.Article'), IDENT_SEED('dbo.Article')

-- 直前の生成されたIDENTITY値を取得する
-- IDENTITYを含むテーブルにINSERTした後に使用する
SELECT SCOPE_IDENTITY()

-- 割り当てられた最大のIDENTITY値を取得する
DBCC CHECKIDENT('dbo.Article', NORESEED)

IDENTITY以外にSQL Server でユニークな値を作成する方法はuniquidentifer 型を使用します。この場合にユニークなGUIDを生成するにはNEWID()関数を使用します。

2. まとめ

今回の説明は以上です。

指摘点、誤りがある場合はご連絡ください。