前提:需要在字典表裡設計自增字段。
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)一張表不能有多個觸發器,因為觸發器會全部出發,一旦有乙個寫錯,所有的觸發器都會無法執行,因此最好只寫乙個觸發器。
ORACLE表主鍵自增
下面用乙個例子來說明自增主鍵的建立 一 先建立一張表 drop table 表名 create table 表名 id integer primary key,主鍵 需要設定成自動增加 name varchar2 20 varchar2 2 二 建立squence drop sequence seq...
oracle 表 主鍵自增
1 建立表 2 建立自動增長序列 create sequence v systemlog sequence 自定義命名 increment by 1 每次加幾個 start with 1 從1開始計數 nomaxvalue 不設定最大值,設定最大值 maxvalue 999999999 nocycl...
建表主鍵自增 Oracle建表,建主鍵,自增
oracle建表,建主鍵,自增 建表 create table test id number 4 not null primary key,name varchar2 25 序列 create sequence test sequence increment by 1 每次增加幾個 start wi...