Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/04/2011, 14:08
diegocumarin
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
Información ORA-04091: mutating, trigger/function may not see it

Buenas Tardes Amigos

Tengo una tabla que se llena mediante un archivo .ctl este archivo llene una cantidad (X) de campo pero la tabla tiene mas (ya que tiene cmpos con valores por defaut, uno de esos campos es el campo estado que al llenarse la tabla, ese campo por defecto tooma el valor 'NEW', que definio al definir la creacion de la tabla)

existen dos campos que si estan definidos en el CTL llamados dirfactura y dirpedido... a veces estos dos campos me vienen vacio.

lo que quiero es que si alguno de los dos de estos campos me viene vacio inmediatamente hacerle un update a la tabla en el campo Estado (que por defecto viene 'NEW') colocarle el valor 'ERROR'

yo intente hacerlo con un tigger pero me da un ORA-04091: table XXVE.IC_ENCABEZADO_PEDIDO_SYSGOLD is mutating, trigger/function may not see it ... entendi que esto sucede porque estoy haciendo un update a una misma tabla que estoy consultando....

luego para solucionar hice dos tigger en el primero los valores vacion encontrados los inserte en una tabla temporal para guardarlos... en el segundo tiguer hago el update validando mi tabla base con la temporal de los valores encontrados en el tigger uno...perote cuento que me da el mismo error.... ya no se que hacer

la otra solucion es programar el ctl para que al momento del llenado valide todo esto comentado. Pero el problema es que no se .. y a demas el Ctl no tiene definido l campo Estado que es el que quiero actualizar (ya que no lo colocan porque esta definido en la tabla pordefecto como 'NEW')...

se que en un CTL puedo colocar una funcion llamada NVL que evalua campos nulos, pero eso lo hace son su mismo campo y yo quiero es que modifique otro campo, no asi mismo.

Disculpaen la mala redacción pero trate de explicartelo coloquialmente y puedas entenderme..