Oracle データベース

【Oracle】シーケンス(sequence)の値を変更する方法

Oracleのシーケンス(sequence)について、不用意に発番が進んでしまうケースが何度か発生したので、シーケンスを作成し直す方法をここにメモしておきます。

ポイントとしては、現状のシーケンスを一旦削除し、初期値を主キーの最大値に+1した値でを再作成することです。

-- シーケンス(sequence)の削除
-- DROP SEQUENCE <シーケンス名>;
SQL> DROP SEQUENCE M_USER_SEQ;

-- シーケンス(sequence)の再作成
/* CREATE SEQUENCE <シーケンス名> 
    MINVALUE 1 
    MAXVALUE 99999999999 
    INCREMENT BY 1 
    START WITH <初期値>;*/
SQL> CREATE SEQUENCE M_USER_SEQ  MINVALUE 1 MAXVALUE 99999999999 INCREMENT BY 1 START WITH 600 CACHE 20 NOORDER  NOCYCLE;

上記クエリを実行することで、初期値が600のシーケンスが再作成されます。

もしかしたらALTER文とかでもっといい方法があるかもしれませんが、自分は一旦この方法で対応できました。

 

-Oracle, データベース