Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/03/2009, 04:27
jessifb88
 
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