Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Problemas con trigger y el famoso error de "tablas mutantes"

Estas en el tema de Problemas con trigger y el famoso error de "tablas mutantes" en el foro de Oracle en Foros del Web. Buenas gente, La verdad es que no se como solventar este error que me ha sucedido. Se de donde proviene el error de tabla mutantes, ...
  #1 (permalink)  
Antiguo 15/04/2011, 02:33
 
Fecha de Ingreso: agosto-2006
Mensajes: 174
Antigüedad: 17 años, 8 meses
Puntos: 2
Problemas con trigger y el famoso error de "tablas mutantes"

Buenas gente,

La verdad es que no se como solventar este error que me ha sucedido. Se de donde proviene el error de tabla mutantes, y es debido a que dentro del trigger de actualizacion de la tabla, se hace un select sobre la misma tabla, y es por ello que da el error de "tablas mutantes".

El trigger basicamente realiza la funcion que que se dispara cuando hay una actualizacion sobre el campo X de la tabla T1. Y lo que se pretende con el trigger es que se haga una insercion en otra tabla de unos datos obtenidos de una consulta de tres tablas. Seria algo como esto:

CREATE OR REPLACE TRIGGER TG_SMS_TELEFONO
--BEFORE UPDATE
AFTER UPDATE
OF ESTADO
ON SMS_TELEFONO
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN

insert into temporal_sms (telefono, mensaje, error, fecha, aplicacion, id, usuario, nif, datos, estado)
SELECT numero AS telefono,
texto AS mensaje,
decode (t.estado,
'ENVIADO', 'SMS Sended',
'PENDIENTE', 'PENDIENTE',
'ERROR_SUP_MAX_INTENTOS' , 'ERROR_SUP_MAX_INTENTOS',
'ERROR_EN_MENSAJE', 'ERROR_EN_MENSAJE' )
AS error,
fecha_recepcion AS fecha,
'SISPECAN-SMS' AS aplicacion,
seq_id_sms_log.NEXTVAL AS ID,
usuario_fk AS usuario,
campo1 AS nif,
'NULL' AS datos,
'NULL' AS estado
FROM sms_mensaje m,
sms_telefono t,
sms_mensajes2telefonos mt
WHERE m.ID = mt.mensajes_fk AND t.ID = mt.telefonos_fk
AND m.id = :new.id;

commit;

END TG_SMS_TELEFONO;
/


Muchas gracias de antemano ante una posible solucion!!!

Etiquetas: tablas, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:59.