Wie löse ich einen Fehler in einer mutierenden Tabelle (Oracle)?

Ich erstelle die folgenden Tabellen:

create table products

(
        code             varchar(9),
        group_code       varchar(9),
        price            number,  

CONSTRAINT pk_code PRIMARY KEY (code)
);

Ich habe einen Auslöser erstellt, für den der Preis pro Produktgruppe 100 Dollar nicht überschreitet:

create or replace trigger nomore100
before insert or update on products
for each row
declare
cursor c_total is
select group_code, sum(price) as total_price
from products
where group_code=:new.group_code
group by group_code;
v_total c_total%rowtype;
begin
for v_total in c_total loop
    if v_total.total_price+:new.price > 100 then
        raise_application_error(-20150,'No more than 100 dollars');
    end if;
end loop;
end nomore100;
/

Der Trigger funktioniert für Einfügungen, aber wenn ich versuche, ein Update durchzuführen:

update products set price=120 where code='PX1';

Oracle return:

"Tabelle% s.% s mutiert, Trigger / Funktion sieht es möglicherweise nicht"

Vielen Dank für alle Vorschläge oder Antworten, einen schönen Tag noch!

Antworten auf die Frage(0)

Ihre Antwort auf die Frage