【曹操】oracle庫表配置自增字段合計
前提:需要在字典表裏設計自增字段。
1、需要添加自增字段的目標表
create table ICONDATA.CCAO_DICTIONARY_INFO
(
OBJECT_NAME VARCHAR2(80),
OBJECT_ID VARCHAR2(20),
PARENT_ID VARCHAR2(20),
UPDATE_USER VARCHAR2(50),
UPDATE_TIME NUMBER,
SORT_ID NUMBER,
OPTION_TYPE VARCHAR2(50),
SEQU_ID NUMBER
)
2、創建序列
create sequence ccao_sequ_autoinc
minvalue 1
maxvalue 9999999999999999999999999999
start with 1
increment by 1
nocache;
修改cache大小:
alter sequence ccao_sequ_autoinc cache 20;
3、創建觸發器
create or replace trigger insert_ccao_sequ_autoinc --觸發器名
before insert on ccao_dictionary_info --添加自增字段的表
for each row
begin
select ccao_sequ_autoinc.nextval into :new.sequ_id from dual; --序列名
end;
或者設置一個中間變量nextid:
create or replace trigger insert_ccao_sequ_autoinc
before insert on ccao_dictionary_info
for each row
declare
nextid number;
begin
IF :new.sequ_id is null or :new.sequ_id = 0 THEN
select ccao_sequ_autoinc.nextval into nextid from dual;
:new.sequ_id := nextid;
end if;
end;
4、查看序列創建結果,查看觸發器創建結果
select * from all_triggers a where a.trigger_name='INSERT_CCAO_SEQU_AUTOINC';
select * from user_sequences a where a.sequence_name = 'CCAO_SEQU_AUTOINC';
5、注意事項
(1)創建序列時,最好設置緩存,提高速率;
(2)創建觸發器時,一定要注意觸發器中,包含觸發器名稱、序列名和添加自增字段的目標表,千萬不能弄錯,不然觸發器編譯會出錯,報錯觸發器器無效且驗證不通過,一定是觸發器寫的有問題;
(3)一張表不能有多個觸發器,因為觸發器會全部出發,一旦有一個寫錯,所有的觸發器都會無法執行,因此最好隻寫一個觸發器。
最後更新:2017-09-12 18:02:23