把触发器改成下面的试试:
CREATE OR REPLACE TRIGGER "AAO"."TRAS_OIL" 
    BEFORE INSERT    --将after改成before
    ON "OILORDER" 
    FOR EACH ROW 
declare 
    tmp number;
    tmp2 number;
begin
    tmp := :new.hx_id;
    select sum(fill_oil) into tmp2 from oilorder where hx_id = tmp;
    insert into trg_tmp(xjy) values (tmp2);
end;

解决方案 »

  1.   

    问题解决了!
    非常感谢zgh2003
    但是我还是不太明白:为什么不能after呢?
      

  2.   

    不能在after行级触发器中修改:new,因为该语句已经被处理了,
    :new仅仅在before行级触发器中被修改。after insert的意思是:在执行插入操作完成以后再执行触发动作,
    所以这时:new值已不再存在,于是在oracle中会给出异常提示触发失败。before insert的意思是:在执行插入操作以前就执行触发动作,
    这时的:new值即为你要执行新的insert值。