我在表中有许多不同的汽车,每辆汽车都有自己的价格。每次更新某些内容或在表中插入新行时,我都需要重新计算和更新平均价格。
我正在尝试AVG()
在触发器中使用函数,但突然出现运行时错误:
ORA-04091: table abcde.SCL is mutating, trigger/function may not see it
我相信解决方案是使用语句而不是行触发器触发器。在这种情况下,语句触发器不允许使用:new.ID or :old.ID
,那么我如何检测更新了哪个汽车品牌,以便重新计算平均值?
create or replace trigger AvgTrigger
after insert on cars
for each row
declare
carAvg number;
begin
SELECT Avg(price) into carAvg from car where id# = :new.id#;
end;