CREATE SEQUENCE myid
INCREMENT BY 1 -- 每次遞增值
START WITH 1 -- 起始值
NOMAXVALUE -- 無上限
NOCYCLE -- 不循環
CACHE 10; -- 記憶體預載 10 個值,提升效能
| 參數 | 說明 | 預設值 |
|---|---|---|
| INCREMENT BY | 遞增間距(可負數遞減) | 1 |
| START WITH | 第一個產生的值 | 1 |
| MAXVALUE / NOMAXVALUE | 上限值 / 無上限 | NOMAXVALUE |
| MINVALUE / NOMINVALUE | 下限值 / 無下限 | NOMINVALUE |
| CYCLE / NOCYCLE | 達上限後是否循環 | NOCYCLE |
| CACHE / NOCACHE | 記憶體預載數量 / 不預載 | CACHE 20 |
| ORDER / NOORDER | RAC 環境下是否保證跨節點有序 | NOORDER |
INSERT INTO stu VALUES (myid.NEXTVAL, 'lili');
SELECT myid.CURRVAL FROM DUAL;
ORA-08002。NEXTVAL,每次皆遞增並回傳不同值。NOCACHE。ALTER SEQUENCE myid
INCREMENT BY 10
MAXVALUE 10000
CYCLE
NOCACHE;
無法修改 START WITH,需 DROP SEQUENCE 後重建。
DROP SEQUENCE order_seq;
SEQUENCE_CACHE_ENTRIES:控制同時可快取的 Sequence 數量。
CACHE 100 以上,減少 Row Cache Lock 爭用。NOCACHE 或改用 ORDER 保證有序。USER_SEQUENCES 監控 LAST_NUMBER 接近 MAXVALUE 狀況。