我有表test(a,b,c)三个字段都是number型的。我想做一个触发,当插入c列值则设置当前行的a列值为c*0.25我简单的写的触发。编译是对的。但插入一个新数据就报错
不知道是逻辑错误还是什么错误。
create or replace trigger tr
  after insert or update of  c on test
  for each row
begin
 insert into test (a) values(:new.c*0.25);
end;

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER TR
      BEFORE INSERT OR UPDATE OF C ON TEST
      FOR EACH ROW
    BEGIN
      :new.a:=:NEW.C * 0.25;
    END;
    /
      

  2.   

    是这样的。
    但有两个疑点为啥用before不用after,还有必须加个update,如果这样子INSERT  OF C
    会编译错误。
      

  3.   

    你更新了表,after触发器中就不能再去读触发器的基表了。