すぐに忘れてよく詰まるので備忘録。
Oracleのテーブルに自動採番列を作成するとき、同時にシーケンスオブジェクトが自動生成される。
このシーケンスの開始値をリセットするには。
通常のシーケンスオブジェクトはALTER SEQUENCE文でリセットできるが、自動生成されたシーケンスオブジェクトにALTER SEQUENCE文を実行した場合、「システム生成の順序は変更できません」というエラーが出てしまう。
ではどうすればよいか。
システムによって自動生成されたシーケンスはALTER TABLE文でリセットできる。
自動生成されたシーケンスオブジェクトを直接変更することはできないが、自動採番列の定義を変更する形で間接的に変更できる。
(例) tab1テーブルのid列のシーケンスの開始値を1からに変更する
ALTER TABLE tab1 MODIFY (id GENERATED ALWAYS AS IDENTITY (START WITH 1)) ;