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!