天天看點

【曹操】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

declare

  nextid number;

  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;

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)一張表不能有多個觸發器,因為觸發器會全部出發,一旦有一個寫錯,所有的觸發器都會無法執行,是以最好隻寫一個觸發器。