方法:1、用DROP SEQUENCE語句刪除sequence,然後用Create sequence語句重新建立一個;2、用Increment By修改序列初始值,語法為「ALTER SEQUENCE...INCREMENT BY 數值」。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
Oracle 序列(Sequence)主要用於產生流水號,在應用中經常會用到,特別是作為ID值,拿來做表主鍵使用較多。
但是,有時需要修改序列初始值(START WITH)時,有同仁使用這個語句來修改:alter sequence sequencename start with xxxxxxxx。但是,在Oracle DB中,修改序列沒有這樣的語法。以下介紹幾種修改方式:
1、先刪除序列,然後重新建立。
這個方法比較暴力,也比較方便,如果序列有在用,會影響應用的正常使用。
若不加條件語句,預設建立的序列格式如下:
#語意Semantics:
INCREMENT BY:指定序列成長步長。可以為正(升序)、負整數(降序),但不能為0。最高精度28。
START WITH: 指定序列起始數。預設為序列最小值。
MAXVALUE :指定序列最大值。最大28位。必須大於等於起始值且大於等於序列最小值。
NOMAXVALUE: 無最大值(實際為10^27或-1)。 default
MINVALUE :指定序列最小值。
NOMINVALUE :無最小值(實際為1或-10^26)。 Default
CYCLE :指定序列達到最大值或最小值後繼續從頭開始產生。
NOCYCLE :不循環產生。 Default.
CACHE :指定資料庫記憶體中預先分配的序列值個數,以便快速取得。最小cache值為2。
刪除序列必須要有drop any sequence權限
語法:
範例:
DROP SEQUENCE oe.customers_seq;
2.透過Increment By來實現修改初始值。
例如:若序列名稱是SEQ_TEST,初始值是13,現在要設定初始值為1013,Increment By值為:1000(1013-13)
#1)執行:
ALTER SEQUENCE SEQ_TEST INCREMENT BY 1000;
2) 執行:
SELECT SEQ_TEST.NEXTVAL FROM DUAL;
3) 執行:
ALTER SEQUENCE SEQ_TEST INCREMENT BY 1;
推薦教學:《Oracle影片教學》
以上是oracle怎麼修改sequence的詳細內容。更多資訊請關注PHP中文網其他相關文章!