MySQL
在建表的時候聲明字段即可
id int auto_increment primary key not null
Oracle
第一步:建立表
drop table t_role;
create table t_role (
role_name varchar(255) NOT NULL,
note varchar(255) NOT NULL,
id number NOT NULL,
PRIMARY KEY (id)
);
這裡需要注意主鍵id得是number類型的,如果是int類型将無法觸發觸發器。
第二步:建立序列
create sequence role_sequence
minvalue 1 --最小值
nomaxvalue --不設定最大值(由機器決定),或 根據表字段的值範圍設定 maxvalue
maxvalue 99999999 -- 最大值
start with 1 --從1開始計數,數值可變
increment by 1 --每次加1,數值可變
nocycle --一直累加,不循環
nocache; --不建緩沖區。 如果建立cache那麼系統将自動讀取cache值個seq,這樣會加快運作速度;如果在單機中使用cache,或者oracle死了,那麼下次讀取的seq值将不連貫,是以不建議使用cache。
create sequence role_sequence
minvalue 1
nomaxvalue
start with 1
increment by 1
nocycle
nocache;
第三步:建立觸發器執行
create or replace trigger role_trig
before
insert on t_role for each row when (new.id is null)
BEGIN
select role_sequence.nextval into :new.id from dual;
END;
/
測試一下:
insert into t_role(note,role_name) values(\'連接配接\',\'nihao\');
insert into t_role(note,role_name) values(\'連接配接\',\'nihao\');
insert into t_role(note,role_name) values(\'連接配接\',\'nihao\');
commit;