閱讀712 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go  阿裏雲異構計算產品家族亮相,為人工智能提供全球加速能力
  下一篇:go  未來汽車配置傳感器的發展趨勢有五大方向