オラクルのシークエンス(シーケンス)の詳細
シーケンス(Sequence)とはOracleデータベースで一意で連番あるいは連番の数字を生成するために使われるオブジェクトです。シーケンスは主キー値やその他のユニークな識別値の生成に使用され、よくテーブルの主キー列で使用されます。
シーケンスの作成構文:
CREATE SEQUENCE sequence_name
[INCREMENT BY n]
[START WITH m]
[MAXVALUE p | NOMAXVALUE]
[MINVALUE q | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE n | NOCACHE];
うち
- sequence_name:データの順序を示す名前、他の名前と重複しない。
- nだけ増減する値の指定。初期値は1。
- 開始値(開始する値)を表すm:デフォルトでは1。
- MAXVALUE p:列の最大の値、初期値は10^27-1
- NOMAXVALUE: 最大値の制限がないことを示します。
- MINVALUE:系列の最小値、デフォルトは1
- 公称値:最小値の制限がないことを表す。
- CYCLE:最大値を超過すると最小値に折り返します。デフォルトでは折り返しなし。
- NOCYCLE:繰り返しなし。
- 接續した値のキャッシュ;デフォルトは 20
- キャッシュしない
シーケンスの使用
- NEXTVAL
SELECT sequence_name.NEXTVAL FROM dual;
- 現値
SELECT sequence_name.CURRVAL FROM dual;
- シーケンスを変更します。
ALTER SEQUENCE sequence_name [INCREMENT BY n] [START WITH m];
- シーケンスを削除する
DROP SEQUENCE sequence_name;
シーケンスはデータベースレベルのオブジェクトで、複数のテーブルで共有できます。複数のテーブルが同じシーケンスを共有すると、挿入操作はシーケンスの次の値を自動的に取得して、一意性を確保します。