0

テーブルには多数の異なる車があり、各車には独自の価格があります。何かが更新されるか、テーブルに新しい行が挿入されるたびに、平均価格を再計算して更新する必要があります。

トリガー内で関数を使用しようとしています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;
4

1 に答える 1