oracle利用触发器实现主键字段自增
我们都知道oracle主键自增利用的是序列sequence。我们先创建一个sequence:
1 create sequence test_sequence 2 start with 1 3 increment by 1 4 maxvalue 9999999 5 nocache
然后新建一张表,例如te_user表:
create table te_user( user_id number(11) primary key, user_name varchar2(50), user_pwd varchar2(50) )
如果不用trigger的话,我们插入数据是用到了sequence的nextval属性,例如:
insert into te_user values(test_sequence.nextval,'张三','123456') 或者 insertinto te_user(user_id,user_name,user_pwd) values(test_sequence.nextval,'李四','654321')
那么如果我们定义了trigger的话,就不需要每次都带入sequence来实现了,新建一个trigger来实现这一目的:
create or replace trigger test_trigger before insert on te_user for each row declare next_user_id number; begin select test_sequence into next_user_id from dual; :new.user_id :=next_user_id; end test_trigger
这样每次te_user表的insert操作都会触发此触发器,我们再进行表插入时只需要:
insert into te_user(user_id,user_pwd) values ('王五','13579')
就可以了。