Oracleでシーケンスの現在値の変更

1. nextvalで進める方法

次の値を確認すると値が進むので必要なだけ nextval で進める。

例えば100進めたい場合は次のようにする。

select <SEQ_OBJECT>.nextval from dual connect by level <= 100
値を進めることは出来ても戻すことは出来ない。また、大量に進る場合は時間がかかる。

2. インクリメント値を一時的に変更する方法

一端、進めたい値をインクリメント値に設定して nextval を取得

例えば100進めたい場合は次のようにする。

alter sequence <SEQ_OBJECT> increment by 100;

select <SEQ_OBJECT>.nextval from dual;

その後、すぐに元のインクリメント値に戻す。

alter sequence <SEQ_OBJECT> increment by 1;
元に戻す前に他で nextval が行われないことと、インクリメント値を元に戻すのを忘れないようにする。