當前位置:成語大全網 - 新華字典 - 怎麽讓oracle數據庫的主鍵自增

怎麽讓oracle數據庫的主鍵自增

建立壹個序列啊,每次從序列中取值,提醒壹下插入值的時候不要插入主鍵,用壹個觸發器自動插入主鍵的值,給妳我的壹個案例

CREATE OR REPLACE TRIGGER CRC_028_INOUT_SUMMARY_T(觸發器名)

BEFORE INSERT ON CRC_028_INOUT_SUMMARY(表名稱)

FOR EACH ROW

DECLARE

L_SUMMARY_ID NUMBER := 0;

BEGIN

-- CRC_028_INOUT_SUMMARY_S 是序列名

SELECT CRC_028_INOUT_SUMMARY_S.NEXTVAL INTO L_SUMMARY_ID FROM DUAL;

:NEW.SUMMARY_ID := L_SUMMARY_ID;

END;

好好看看,可以參考我的博客:mit,可能導致log file sync等待,nocache sequence在RAC環境下

會對基於sequence生成的列創建的索引造成實例間大量索引塊爭用。基於以上問題,避免創建nocache sequence。

創建序列的語法,序列是和表壹樣的對象要指定它的用戶

CREATE SEQUENCE sequence

[INCREMENT BY n] -- 自增的公差,默認為1

[START WITH n] -- 起始值

[{MAXVALUE n | NOMAXVALUE}] -- 最大值

[{MINVALUE n | NOMINVALUE}] -- 最小值

[{CYCLE | NOCYCLE}] -- 循環

[{CACHE n | NOCACHE}]; -- 緩存

從序列取值: CURRVAL 取當前值, NEXTVAL取下壹個值

更改序列的定義:

ALTER SEQUENCE dept_deptid_seq

INCREMENT BY 20

MAXVALUE 999999

NOCACHE NOCYCLE;