HOME > SEQUENCE編
SEQUENCE(シーケンス/順序)
シーケンスとは、例えばレコードに一意になる番号を振りたいというような時に、その番号を自動生成してくれるオブジェクトです。
シーケンスを使うと条件に沿った一意の番号を簡単に振ることできます。
シーケンスの作成
シーケンスの作成にはCREATE SEQUENCE句を使用します。
CREATE SEQUENCE構文 |
|
| パラメータ | 説明 |
|---|---|
| OR REPLACE | 同名のシーケンスが既に存在した時でも、構わず上書きする場合に指定する |
| START WITH | 初期値の設定 ここで設定した値から采番が開始する |
| INCREMENT BY | 増分の設定 ここで指定した数だけ増えていく |
| MAXVALUE 最大値 | NOMAXVALUE | インクリメントする最大値の設定 NOMAXVALUEを設定すると最大値はナシ。 |
| MINVALUE 最小値 | NOMINVALUE | 増分がマイナスの時の最小値の設定 NOMINVALUEを設定すると最小値はナシ。 |
| CYCLE | NOCYCLE | 最大値に達したときにシーケンスをループするかしないかの設定 |
| CACHE キャッシュ数 | NOCACHE | シーケンスに高速にアクセスするために、メモリー上に値を保持しておく場合に指定する。(デフォルト値は、キャッシュ数=20) |
--(例)CREATE SEQUENCE文の例 CREATE SEQUENCE seq01 START WITH 1 INCREMENT BY 1 MAXVALUE 500 MINVALUE 1 CYCLE ; |
この例だと、1から発番して、1づつ増えて、最大値が500で、500まで発番されるとまた1から発番するシーケンスが作成されます。
CREATE SEQUENCEの実行には以下の権限が必要です。
- 自スキーマに作成する場合:「CREATE SEQUENCE」システム権限
- 他スキーマに作成する場合:「CREATE ANY SEQUENCE」システム権限
シーケンスの変更
シーケンスを変更するには ALTER SEQUENCE句を使用します。
ALTER SEQUENCE構文 |
|
変更では初期値は指定できません。 各パラメータは、上記「シーケンスの作成」の所をごらんください。
シーケンスの削除
シーケンスの削除には DROP SEQUENCE句を使用します。
DROP SEQUENCE構文 |
|
--(例)シーケンス(シーケンス名:test_seq)を削除する。 DROP SEQUENCE test_seq; |
シーケンスの使い方
シーケンスは以下のように使用します。
構文 (シーケンスの使い方) |
|
--(例)現在のシーケンス番号を取得する SELECT seq01.currval FROM dual; --(例)新たに発番したシーケンス番号を使ったINSERT文 INSERT INTO test_table values(seq01.nextval, 'チョコレート', 200); |
シーケンス作成後、1度もNEXTVALにてアクセスしていない状態で、CURRVALでアクセスするとエラーになるのでご注意ください。

CREATE SEQUENCE構文