Oracle シーケンス
Oracle シーケンスオブジェクト
シーケンスの作成
- CREATE SEQUENCE コマンドで作成可能
- シーケンスには以下の機能がある
- 初期値や増分を任意に指定可能
- 増分をマイナスに指定する事で降順の採番が可能
- CYCLEを指定して,循環して採番することが可能
- CACHEを利用してメモリ上で管理し,パフォーマンスの向上を図る
- データベースを起動/停止しても値は元に戻らない
CREATE SEQUENCE 順序名
[START WITH 初期値]
[INCREMENT BY 増分]
[MAXVALUE 最大値 | NOMAXVALUE ]
[MINVALUE 最小値| NOMINVALUE ]
[CYCLE | NOCYCLE]
[CACHE メモリー上に取る値 | NOCACHE ]
- ALTER SEQUENCE コマンドにてパラメータの変更が可能.ただし,START WITH は変更できない.また,現在の採番済みの順序番号より小さいMAXVALUEに変更することはできない.
シーケンスの削除
- DROP SEQUENCE シーケンス名
シーケンスの使用方法
- 新しい値を取得するとき
SELECT シーケンス名.NEXTVAL FROM DUAL
- 直近に採番された値を参照する場合
SELECT シーケンス名.CURRVAL FROM DUAL
- CURRVAL は現ユーザが採番した最後の番号を返す.現ユーザが一度も採番していない場合にはエラーになる.
NEXTVAL, CURRVALの制限事項
- 利用できる場所
- SELECT句,INSERT文中の副問い合わせ,VALUES句中の中(INSERT),SET句(UPDATE)
- 利用できない場所
- SELECT文,DELETE文,およびUPDATE分中の副問い合わせ
- DISTINCTを含むSELECT句,
- GROUP BY 句, HAVING句,ORDER BY句を含むSELECT文
- CREATE TABLE, ALTER TABLEの中のDEFAULT式
ロールバックについて
- ロールバックが発生してもNEXTVALを実行したら値は戻らないので欠番が生じる
2007年09月02日(日) 17:34:41 Modified by dodobon