出什么错呢?请你说清楚另外,你的触发器将是一个永远执行的触发器,甚至会导致服务器死机!如果只是想在插入后进行修改应该为如下:create or replace trigger t_a_test
   after insert  //而不是 after insert or update 
   on a_test
   for each row
begin 
   update a_test set weight=30;
end t_a_test;

解决方案 »

  1.   


       去掉那个 or update后,还是同样的错误错误:
       表a_test发生了变化,触发器/函数不能读
       触发器在执行过程中出错
      

  2.   

    create or replace trigger t_a_test
       after insert or update 
       on a_test
       for each row
    begin 
        :new.weight:=30;
    end t_a_test;
      

  3.   

    请参考如下触发器:(其中:id,num,sl1,sl2,sl3为字段名)
    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;
    /
      

  4.   

    beckhambobo(beckham) 的应该可以执行。
      

  5.   

    触发器使用在 after insert on a_test 后,表a_test成了变异表,对变异表,oracle对它的访问有限制. 因此触发器使用在 before insert on a_test 的时候是可以的.
      

  6.   

    如只修改,将语句update a_test set weight=30;
    该为:
    update a_test set weight=:new.weight where id=:old.id;
       
      

  7.   

    就是在插入一行记录之后,为这行记录的weight赋值
      

  8.   

    我也遇到了这个问题,如果是AFTER INSERT,在保存数据的时候会报错。如果改成BEFORE INSERT这时候插入数据的时候是成功的,但Update语句的更改没有执行。
    Oracle里面在触发器里面不能够对触发表再进行更改吗?