首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle Sequence 語法完整參考:建立、使用、修改、刪除與快取機制

     編輯:Oracle 資料庫基礎

一、建立 Sequence

CREATE SEQUENCE emp_sequence
    INCREMENT BY 1      -- 每次遞增 1
    START WITH 1        -- 從 1 開始
    NOMAXVALUE          -- 無上限
    NOCYCLE             -- 不循環
    CACHE 10;           -- 記憶體預載 10 個值

二、核心屬性

屬性說明
CURRVAL回傳 Sequence 當前值(需先在該 Session 呼叫過 NEXTVAL)
NEXTVAL遞增 Sequence 並回傳新值

使用範例

INSERT INTO emp VALUES (empseq.NEXTVAL, 'LEWIS', 'CLERK', 7902, SYSDATE, 1200, NULL, 20);
SELECT empseq.CURRVAL FROM DUAL;

三、可使用 Sequence 的場合

  • 不含子查詢、Snapshot、View 的 SELECT
  • INSERT 子查詢
  • INSERT VALUES 子句
  • UPDATE SET 子句

四、重要行為提醒

  1. 首次 NEXTVAL 回傳 START WITH 值;後續每次遞增 INCREMENT BY。
  2. CURRVAL 僅在該 Session 執行過 NEXTVAL 後可用,否則報 ORA-08002。
  3. 同一陳述式多次呼叫 NEXTVAL,每次皆遞增並回傳不同值。
  4. CACHE 可能導致跳號:異常關機(SHUTDOWN ABORT)遺失記憶體快取值。需連續號碼請指定 NOCACHE。

五、修改 Sequence

ALTER SEQUENCE emp_sequence
    INCREMENT BY 10
    MAXVALUE 10000
    CYCLE
    NOCACHE;

無法修改 START WITH,需 DROP SEQUENCE 後重建。

六、刪除 Sequence

DROP SEQUENCE order_seq;

七、初始化參數

SEQUENCE_CACHE_ENTRIES:設定同時可快取的 Sequence 數量上限。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved