Oracle - error tablas mutantes en pl sql

 
Vista:

error tablas mutantes en pl sql

Publicado por justhaku (1 intervención) el 09/01/2019 18:14:30
Hola a todos!

Hace poco me adentré en el maravilloso mundo de los triggers y me he topado con que me da un error de tabla mutante, he estado investigando por mi cuenta y no he sacado nada en claro.
Para poneros en contexto, la idea es recibir en la variable el numero de veces que se repite el componente para luego poder hacer un condicional y cambiar el estado en la tabla del componente si no está repetido.

El trigger en cuestión sería este:
1
2
3
4
5
6
7
8
9
create or replace TRIGGER TRIGGER1
BEFORE DELETE ON TDE_DISENYO_ESTR
FOR EACH ROW
DECLARE
  n  INTEGER;
BEGIN
  SELECT COUNT(t1.ID_COMPONENTE) INTO n FROM TDE_DISENYO_ESTR t1 INNER JOIN TDE_COMPONENTE t2 ON t1.ID_COMPONENTE = t2.ID_COMPONENTE WHERE t1.ID_COMPONENTE = :OLD.ID_COMPONENTE;
  DBMS_OUTPUT.PUT_LINE('Hay ' || n || ' componentes iguales.');
END;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 117
Bronce
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

error tablas mutantes en pl sql

Publicado por gilman (52 intervenciones) el 10/01/2019 08:58:00
El problema es que la tabla que lanza el trigger es TDE_DISENYO_ESTR, y no se puede hacer consulta sobre la tabla (o tablas) que lanzan el trigger, si quieres hacer la comprobación tendrás que hacerla antes de ejecutar la sentencia DELETE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar