触发器在增加记录或修改记录时要分别触发,而不能同时触发。
请参考如下触发器的触发条件(insert or update or delete)
create or replace trigger man_tri
after insert or update or delete on a
for each row
begin
if inserting then
insert into a1 values(:new.id,:new.num,:new.d,:new.sl1,:new.sl2,:new.sl3);
elsif updating then
update a1 set id=:new.id,num=:new.num,d=:new.d,sl1=:new.sl1,sl2=:new.sl2,sl3=:new.sl3 where id=:old.id;
else
delete from a1 where id=:old.id;
end if;
end;
/
请参考如下触发器的触发条件(insert or update or delete)
create or replace trigger man_tri
after insert or update or delete on a
for each row
begin
if inserting then
insert into a1 values(:new.id,:new.num,:new.d,:new.sl1,:new.sl2,:new.sl3);
elsif updating then
update a1 set id=:new.id,num=:new.num,d=:new.d,sl1=:new.sl1,sl2=:new.sl2,sl3=:new.sl3 where id=:old.id;
else
delete from a1 where id=:old.id;
end if;
end;
/
after insert or update or delete on a
for each row
begin
update a1 set id=:new.id,num=:new.num,d=:new.d,sl1=:new.sl1,sl2=:new.sl2,sl3=:new.sl3 where id=:old.id;
exception when other then
--把出错信息记录在一个表中
insert into errors values ...
end;
/
在触发器触发时,修改a1的某个字段值,但由于当时a1的记录正由其它的程序修改,被锁定了,触发器在到达等待时间时仍然未能解锁,所以就报了一个等待锁时超时的错.