Plsql 面对变异表问题

Plsql 面对变异表问题,plsql,triggers,Plsql,Triggers,如何在触发器代码中根据主键从触发器表中检索一个字段的总和 create or replace TRIGGER T_test AFTER INSERT or UPDATE ON t_inv FOR EACH ROW DECLARE v_inv number; v_inv_order number; BEGIN select sum(inv_amt) into v_inv from t_inv where inv_id = :new.inv_id group by inv_

如何在触发器代码中根据主键从触发器表中检索一个字段的总和

create or replace TRIGGER T_test
AFTER INSERT or UPDATE  
 ON t_inv  
   FOR EACH ROW   
DECLARE 
v_inv number;
v_inv_order number;
BEGIN
select sum(inv_amt) into v_inv from t_inv 
where
inv_id = :new.inv_id
group by inv_id;

select sum(inv_order_amt) into v_inv_order from t_inv 
where
inv_order_id = :inv_order_id
group by inv_order_id;

update t_inv_order set order_amt = v_inv_order where inv_id = :new.inv_id
END;

在Oracle中,作为触发器(或从触发器调用的函数)内的规则,您无法访问触发触发器的表。在这里,由于触发器在t\u inv上插入和更新时触发,因此您无法从t\u inv中选择。您可能需要进行调查。注:变异表异常通常是设计不良的指标。