首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle Sequence 完整指南:建立、參數、修改、刪除與實例

     編輯:Oracle 資料庫相關知識

建立語法與參數詳解

CREATE SEQUENCE seq_name
  [INCREMENT BY n]       -- 步長,預設 1,負值為遞減
  [START WITH n]         -- 初始值,預設 1
  [{MAXVALUE n | NOMAXVALUE}]  -- 最大值,遞增預設 10^27
  [{MINVALUE n | NOMINVALUE}]  -- 最小值,遞減預設 -10^26
  [{CYCLE | NOCYCLE}]    -- 循環/不循環,預設 NOCYCLE
  [{CACHE n | NOCACHE}]; -- 記憶體預取,預設 20

參數行為對照

參數遞增序列遞減序列
MAXVALUE上限循環時的最大值
MINVALUE循環時的最小值下限
CYCLE達 MAXVALUE 回 MINVALUE達 MINVALUE 回 MAXVALUE

常用操作

  • 取得下一值:seq_name.NEXTVAL(每呼叫一次遞增)
  • 查看當前值:seq_name.CURRVAL(需先在 Session 呼叫過 NEXTVAL)
  • 修改序列:ALTER SEQUENCE seq_name INCREMENT BY 5 MAXVALUE 999999;(START WITH 不可改)
  • 刪除序列:DROP SEQUENCE seq_name;

實戰範例

CREATE SEQUENCE abc_seq
  INCREMENT BY 1
  START WITH 10
  MAXVALUE 9999999
  NOCYCLE
  NOCACHE;
-- 產生 10, 11, 12... 至 9999999 後報錯

效能與陷阱

  • CACHE 可減少字典查詢,但實例崩潰會導致快取值遺失(間隙)。
  • NOCACHE 保證無間隙但效能較差。
  • 觸發器中使用 :NEW.id := seq.NEXTVAL 時,若觸發器因錯誤回滾,序號仍消耗。
  • 12c 引入 IDENTITY 欄位,可簡化主鍵自動產生,底層仍用 Sequence。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved