0

获取 ORA-04079:此触发器的无效触发器规范错误,可以找出原因吗?表格 - TESTCOMM_FINDCOMM - 2 个数字,价格和通讯

create or replace trigger TESTCOMM_FINDCOMM
AFTER
insert or update on "TESTCOMM"
for each row
referencing new as new and old as old
begin
  :NEW.Commission:= :NEW.Price*get_Comm(:NEW.Price);      
end;

函数 get_Comm

create or replace function get_Comm
(i_price in NUMBER)
return NUMBER
as
 o_COMMISSION_percent PRICECOMMISSION.COMMISSION%type;
begin
  select COMMISSION
into o_COMMISSION_percent
  from (
      select COMMISSION,
             rank () over (order by Price desc) rnk
        from PRICECOMMISSION
        where PRICE <= i_price
  ) where rnk = 1;      

  return o_COMMISSION_percent;

end;​
4

1 回答 1

3

您的触发器是 AFTER insert/update 触发器 - 您不能在插入/更新后修改 :NEW 值。

更多关于 AFTER 触发器的信息可以在这里找到。您应该查看的是BEFORE触发器。

于 2012-07-04T19:49:41.700 回答