SQLServer

[SQLServer] シーケンスを作成する

SQLServerでシーケンスを作成するには、CREATE SEQUENCE文を使用します。

構文

(シーケンス作成構文)
CREATE SEQUENCE <スキーマ名>.<シーケンス名> [AS <データ型>] [START WITH <開始値>] [INCREMENT BY <増分値>] [MINVALUE <最小値> | NO MINVALUE] [MAXVALUE <最大値> | NO MAXVALUE] [CYCLE | NO CYCLE] [CACHE <キャッシュ数> | NO CACHE]

[ ]で囲まれた項目はすべて省略可能です。省略した場合は既定値が使用されます。

サンプル

例)1から始まり1ずつ増えるシーケンス「Test.CountBy1」を作成する

例)作成したシーケンスから値を取得する

値を取得するには、NEXT VALUE FOR関数を使用します。

(実行結果:1回目)
1
(実行結果:2回目)
2

実行するたびに値が1ずつ増えていきます。INSERT文の中で直接使うことも、事前に値だけを取得しておくこともできます。

例)データ型・最小値・最大値・循環(CYCLE)を指定して作成する

125→150→175→200と増えていき、次にMAXVALUE(200)を超えるとMINVALUE(100)へ戻ります。CYCLEを指定しない場合は、上限に達した時点でエラーになります。

備考

  • データ型を省略した場合はbigintが使用され、開始値・最小値・最大値もそのデータ型の範囲に応じた既定値が自動的に設定されます。
  • 作成したシーケンスの設定内容は、sys.sequencesカタログビューで確認できます。
    [SQLServer] シーケンスの一覧を確認する
  • IDENTITY列とは異なり、シーケンスは特定のテーブルに紐づかない独立したオブジェクトです。複数のテーブルで同じシーケンスを共有したり、テーブルへのINSERTを伴わずに値だけを取得したりできます。
  • 作成済みのシーケンスを削除するには、DROP SEQUENCE文を使用します。
    (例)DROP SEQUENCE Test.CountBy1;

-SQLServer
-