CREATE SEQUENCE シーケンスを作成するSQL文

CREATE SEQUENCEは、シーケンス(順序)を作成するSQL文です。順序の初期値、増分値、最大値、最小値、および順序のサイクルを指定できます。

構文

CREATE SEQUENCE [schema.]sequence [START WITH start] [INCREMENT BY inc]
  [ MAXVALUE max | NOMAXVALUE ]
  [ MINVALUE min | NOMINVALUE ]
  [ CYCLE | NOCYCLE ]
  [ CACHE | NOCACHE ]
schema
順序を作成するスキーマを指定する。自分のスキーマ内に順序を作成する場合は、スキーマの指定を省略できる。
SQL> CREATE SEQUENCE tsuka.empno;

順序が作成されました。
sequence
作成する順序の名前を指定する。
SQL> CREATE SEQUENCE empno;

順序が作成されました。
START WITH
順序の開始値を指定する。順序の開始値を省略した場合は、1から始まる。
SQL> CREATE SEQUENCE empno START WITH 1000;

順序が作成されました。

SQL> SELECT empno.NEXTVAL FROM DUAL;

NEXTVAL
-------
   1000
INCREMENT BY
順序の増分値を指定する。順序の増分値を指定しなければ、1づつ増えていく。
SQL> CREATE SEQUENCE empno INCREMENT BY 10;

増分値に負の値を指定して、順序を降順に生成させることもできる。

SQL> CREATE SEQUENCE empno INCREMENT BY -1 START WITH 9999;
MAXVALUE
順序の最大値を指定する。
SQL> CREATE SEQUENCE empno MAXVALUE 9999;

順序が作成されました。
NOMAXVALUE
順序の最大値をデフォルトの設定値にする。昇順の場合は 1028-1、降順の場合は -1 になる。
SQL> CREATE SEQUENCE empno NOMAXVALUE;

順序が作成されました。
MINVALUE
順序の最小値を指定する。
SQL> CREATE SEQUENCE empno MINVALUE 0;

順序が作成されました。
NOMINVALUE
順序の最小値をデフォルトの設定値にする。昇順の場合は 1、降順の場合は -(1027-1) になる。
SQL> CREATE SEQUENCE empno NOMINVALUE;

順序が作成されました。
CYCLE
最大値に達したら最小値に戻ります。CYCLE節の指定を省略した場合は、最大値に達すると順序番号ジェネレータは値の生成を停止し、エラーが返される。
SQL> CREATE SEQUENCE empno CYCLE;

順序が作成されました。
NOCYCLE
順序が最大値または最小値に達した場合は、それ以上値を生成しないように指定する。この場合、最大値に達すると順序番号ジェネレータは値の生成を停止し、エラーを返す。これはデフォルトの動作であるため、CYCLE 句を指定しなければ NOCYCLE となる。
SQL> CREATE SEQUENCE empno NOCYCLE;

順序が作成されました。
CACHE
シーケンスで生成する値を事前にキャッシュしておくと、パフォーマンスが向上する。キャッシュする数を指定するには、CACHEオプションで指定する。
SQL> CREATE SEQUENCE empno CACHE 30;

順序が作成されました。

権限

自分のスキーマ内にシーケンスを作成するには、CREATE SEQUENCE システム権限が必要である。

他ユーザのスキーマ内にシーケンスを作成するには、CREATE ANY SEQUENCE システム権限が必要である。

関連SQL