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

Oracle 實現自增主鍵最佳實踐:Sequence + BEFORE INSERT 觸發器模式

     編輯:Oracle 資料庫相關知識

三步走實現

  1. 建表:CREATE TABLE userlogin (id NUMBER(6) NOT NULL, name VARCHAR2(30) PRIMARY KEY) TABLESPACE users;
  2. 建序列:CREATE SEQUENCE userlogin_seq INCREMENT BY 1 START WITH 1 MINVALUE 1 MAXVALUE 9999999999999 NOCACHE ORDER;
  3. 建觸發器:
    CREATE OR REPLACE TRIGGER userlogin_trigger
    BEFORE INSERT ON userlogin
    FOR EACH ROW
    BEGIN
    SELECT userlogin_seq.NEXTVAL INTO :NEW.id FROM dual;
    END;

Sequence 核心知識

  • CURRVAL 當前值,NEXTVAL 遞增並返回新值
  • 首次必須用 NEXTVAL 初始化,才能用 CURRVAL
  • CACHE n 內存預取提升性能,但非正常關機會丟失號段(跳號),關鍵業務用 NOCACHE
  • ALTER SEQUENCE 可調整增量、最大值、循環、緩存;START WITH 不可改,需重建
  • DROP SEQUENCE 刪除

適用場景

所有需單調遞增主鍵的表,尤其適合高併發插入(序列無鎖爭用)。

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