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')

就可以了。

posted @ 2018-03-01 16:32  晴朗依旧  阅读(253)  评论(0编辑  收藏  举报