シーケンスを再作成せずに指定した番号に進める方法
シーケンスを作成した際に、初期値はstart with
で指定してあげた値から始めることができる。
create sequence TEST_SEQ start with 10000; select SEQUENCE_NAME ,MIN_VALUE,CACHE_SIZE,LAST_NUMBER from user_sequences; SEQUENCE_NAME MIN_VALUE CACHE_SIZE LAST_NUMBER ------------------------------ ---------- ---------- ----------- TEST_SEQ 1 20 10000
しかし、すでに作成されたシーケンスのLAST_NUMBER
を変更するにはstart with
を使用することができない。
その場合は
1. 再作成(drop・create)する
2. select sequence.nextvalを繰り返す
3. INCREMENT BY
とNOCACHE
を使用する
1.は消去できない場合があるのが難点。
2.は非常にめんどくさい。
3の方法を実施する。
SELECT TEST_SEQ2.NEXTVAL FROM DUAL; NEXTVAL ---------- 23 SEQUENCE_NAME MIN_VALUE CACHE_SIZE LAST_NUMBER ------------------------------ ---------- ---------- ----------- TEST_SEQ2 1 20 41
これを+10000番台に変更する。
>ALTER SEQUENCE TEST_SEQ2 INCREMENT BY 10000 NOCACHE; 順序が変更されました。 >SELECT TEST_SEQ2.NEXTVAL FROM DUAL; NEXTVAL ---------- 10023 >ALTER SEQUENCE TEST_SEQ2 increment by 1 cache 20; 順序が変更されました。 SEQUENCE_NAME MIN_VALUE CACHE_SIZE LAST_NUMBER ------------------------------ ---------- ---------- ----------- TEST_SEQ2 1 20 10024
これで次回からは10024からスタートすることになる。
>SELECT TEST_SEQ2.NEXTVAL FROM DUAL; NEXTVAL ---------- 10024 >SELECT TEST_SEQ2.NEXTVAL FROM DUAL; NEXTVAL ---------- 10025 >SELECT TEST_SEQ2.NEXTVAL FROM DUAL; NEXTVAL ---------- 10026