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

tabla mutante al disparar trigger

Estas en el tema de tabla mutante al disparar trigger en el foro de Bases de Datos General en Foros del Web. Tengo ciertas modificaciones a varias tablas dentro de una transacción. Por otra parte tengo un trigger que se dispara AFTER UPDATE la primera tabla que ...
  #1 (permalink)  
Antiguo 30/03/2009, 04:27
 
Fecha de Ingreso: julio-2008
Mensajes: 62
Antigüedad: 15 años, 9 meses
Puntos: 0
Tengo ciertas modificaciones a varias tablas dentro de una transacción.
Por otra parte tengo un trigger que se dispara AFTER UPDATE la primera tabla que se actualiza dentro de la transacción.
Como resultado obtengo este error:
ORA-04091: la tabla KRONOS.SV_PR_PROYECTO está mutando, puede que el disparador/la función no puedan verla
ORA-06512: en "KRONOS.SV_PQ_PROYECTOS", línea 193
ORA-06512: en "KRONOS.SV_PR_PROYECTO_CAMPOS_MOD_TRG", línea 4
ORA-04088: error durante la ejecución del disparador 'KRONOS.SV_PR_PROYECTO_CAMPOS_MOD_TRG'

Mi conclusión es que el trigger se dispara durante la transacción.
He visto que quitando FOR EACH ROW se resolvería el error pero yo no puedo hacerlo porque necesito mirar los valores antiguos y nuevos después del update.

Mi pregunta es: ¿Hay alguna forma de hacer que el trigger se dispare cuando la transacción haya finalizado?
Gracias

Ya encontré la solución al problema: era que desde el PL al que llamaba desde mi trigger hacía una consulta a la BD sobre la tabla asociada al trigger. Para arreglarlo pasé como parámetro al PL el valor de ese campo en vez de obtenerlo desde el PL. Es un fallo tonto de mi parte no haberme dado cuenta pero lo dejo registrado por si a alguien le pasa lo mismo alguna vez. Espero que sea útil!

Última edición por GatorV; 31/03/2009 a las 10:58
  #2 (permalink)  
Antiguo 04/04/2009, 21:46
 
Fecha de Ingreso: junio-2004
Ubicación: Valdivia
Mensajes: 24
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: tabla mutante al disparar trigger

Cita:
Iniciado por jessifb88 Ver Mensaje
Tengo ciertas modificaciones a varias tablas dentro de una transacción.
Por otra parte tengo un trigger que se dispara AFTER UPDATE la primera tabla que se actualiza dentro de la transacción.
Como resultado obtengo este error:
ORA-04091: la tabla KRONOS.SV_PR_PROYECTO está mutando, puede que el disparador/la función no puedan verla
ORA-06512: en "KRONOS.SV_PQ_PROYECTOS", línea 193
ORA-06512: en "KRONOS.SV_PR_PROYECTO_CAMPOS_MOD_TRG", línea 4
ORA-04088: error durante la ejecución del disparador 'KRONOS.SV_PR_PROYECTO_CAMPOS_MOD_TRG'

Mi conclusión es que el trigger se dispara durante la transacción.
He visto que quitando FOR EACH ROW se resolvería el error pero yo no puedo hacerlo porque necesito mirar los valores antiguos y nuevos después del update.

Mi pregunta es: ¿Hay alguna forma de hacer que el trigger se dispare cuando la transacción haya finalizado?
Gracias

Ya encontré la solución al problema: era que desde el PL al que llamaba desde mi trigger hacía una consulta a la BD sobre la tabla asociada al trigger. Para arreglarlo pasé como parámetro al PL el valor de ese campo en vez de obtenerlo desde el PL. Es un fallo tonto de mi parte no haberme dado cuenta pero lo dejo registrado por si a alguien le pasa lo mismo alguna vez. Espero que sea útil!



uff uufff casi llego a ayudar y ya lo resolviste, hay que tener cuidado con esos trigger cuando te topas con la tablita que lo dispara!!.
Saludos
  #3 (permalink)  
Antiguo 12/06/2009, 19:21
 
Fecha de Ingreso: abril-2009
Mensajes: 1
Antigüedad: 15 años
Puntos: 0
Respuesta: tabla mutante al disparar trigger

Yo tengo este mismo problema, soy principiante en Oracle. podrían dar un ejemplo de como solucionar este problema?

Se los agradecería mucho.
  #4 (permalink)  
Antiguo 25/06/2010, 16:01
 
Fecha de Ingreso: marzo-2008
Mensajes: 4
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: tabla mutante al disparar trigger

que significa Pl?
  #5 (permalink)  
Antiguo 25/06/2010, 16:23
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: tabla mutante al disparar trigger

Procedural Language. Es el lenguaje para procedimientos y scripts de Oracle y Postgre (PL/SQL).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 25/06/2010, 18:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 4
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: tabla mutante al disparar trigger

berro muchas gracias por responder tan rapido!!!
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 11:06.