テーブルには多数の異なる車があり、各車には独自の価格があります。何かが更新されるか、テーブルに新しい行が挿入されるたびに、平均価格を再計算して更新する必要があります。
トリガー内で関数を使用しようとしています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;