触发器在增加记录或修改记录时要分别触发,而不能同时触发。
请参考如下触发器的触发条件(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;
/

解决方案 »

  1.   

    dlmaomao(猫猫) 你理解错我的意思了,我当然知道触发器怎么写我的意思是这样:触发器建在一个表上,每当修改记录时触发,去修改另一个表中的相应记录,即:create or replace trigger man_tri
    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的记录正由其它的程序修改,被锁定了,触发器在到达等待时间时仍然未能解锁,所以就报了一个等待锁时超时的错.
      

  2.   

    oracle是有个包作用于等待时间,忘记了是哪个
      

  3.   

    应该有难度。trigger  好似是不能用commit 同rollback 的。期待中。