trigger error ejemplos ejecución durante disparador compuestos compound autonomous_transaction 11g sql oracle plsql triggers

sql - ejemplos - ¿Cómo resolver el error en una tabla mutante(Oracle)?



trigger oracle ejemplos (0)

Creo las siguientes tablas:

create table products ( code varchar(9), group_code varchar(9), price number, CONSTRAINT pk_code PRIMARY KEY (code) );

Creé un desencadenador, para que el precio por grupo de productos no exceda los 100 dólares:

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; /

El disparador funciona para inserciones, pero cuando intento hacer una actualización:

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

Retorno de Oracle:

"la tabla% s.% s está mutando, el disparador / función puede no verlo"

Gracias por cualquier sugerencia o respuesta, que tengas un buen día!