create sequence s;
create or replace trigger auto_inc
before insert on tab_name
for each row
begin
select s.nextval into :new.n_id from dual;
end;
create or replace trigger auto_inc
before insert on tab_name
for each row
begin
select s.nextval into :new.n_id from dual;
end;
第二句trigger后面的是什么?
然后就可以直接用下面的触发器了。
create or replace trigger auto_increase_id
before insert on test
for each row
declare
next_id number;
begin
select seq_test.nextval
into next_id
from dual;
:new.id:=next_id;
end;
最后在插入的时候
例如:insert into tablename (id,name) values(0,'name');
把插序列的地方写个0就可以了(也可以不写)。免得每次插入是写xxx.nextval这句话太麻烦。
只需把tab_name改成你自己的表名。:new.n_id的N_ID改为你表的需要自增的字段
create or replace trigger TABLE_NAME_T
instead of insert or update or delete
on TABLE_NAME
for each row
declare
...
begin
if inserting then
insert into TABLE_NAME(ID,NAME,...)
VALUES
(TABLE_NAME_SEQ.NEXTVAL,
:NEW.NAME,
...);
elsif updating then
...
elsif deleting then
...
end if;
exception
...
end TABLE_NAME_T;
这不就可以了?