大家好,最近碰到一个问题,oracle没有主键自动增长。在网上查资料,只能通过序列和触发器完成,下面是我的一个测试,但是编译一直有错误,请大家指教!
create or replace trigger ddim_pronametest before insert on ddim_tab_user for each row
begin select ddim_sequence.nextval into:new.id from ddim_tab_user end; 一直报:ora-04098:触发器无效,且未通过验证
minvalue 1
maxvalue 9999999999999
start with 1
increment by 1
nocache;
执行上面这个 创建好sequence 然后调用ddim_sequence.nextval可以获取下一值
1)建立用户数据表ddim_tab_user;
2)创建自动增长序列
create sequence ddim_sequence
minvalue 1 maxvalue 99999999
increment by 1
start with 1;
3)创建触发器
create or replace trigger ddim_pronametest
before insert on ddim_tab_user
for each row
begin
select ddim_sequence.nextval into :new.id from dual;
end;
4)提交commit;注意,在创建触发器时,不是从所见表中查询,而是临时表dual
1、创建一个sequence 加入名字为seq_user
2、insert into user(seq_user.nextval , xxx,xx,xx)