Oracle - Error Trigger

   
Vista:

Error Trigger

Publicado por RC (6 intervenciones) el 19/08/2010 16:29:48
Hola buenos dias, he creado un trigger que aparentemente esta bien, pero cuando quiero cambiar el campo status de la tabla bulto me da este error:

ORA-04091: la tabla ORCL.BULTO esta mutada, puede que el disparador/la no puedan verla
ORA-06512: en ORCL.TRGEXP, linea 4
ORA-04088: error durante la ejecucion del disparador 'ORCL.TRGEXP'

Adjunto trigger, Gracias

DROP TRIGGER ORCL.TRGEXP;

CREATE OR REPLACE TRIGGER ORCL.TRGEXP
AFTER INSERT OR UPDATE
OF STATUS
ON ORCL.BULTO
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE V_AGENCIA varchar2(4);
BEGIN
IF :new.status = '5000' THEN
select C.AGE into V_AGENCIA
from vdpedidocab c, vdbultocab b
where C.PEDS = B.PEDS and
C.DIV = B.DIV and
C.ANO = B.ANO and
C.PED = B.PED;

INSERT INTO ORCL.AUX_EXP
VALUES (:new.bulto,:new.div, sysdate,:new.alb,:new.ped,V_AGENCIA,:new.nbulto,null ,null ,null ,0,0 );
end if;

END TRGEXP
/
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

RE:Error Trigger

Publicado por 3than (9 intervenciones) el 20/08/2010 00:55:22
el error se debe a que tratas de modificar la misma fila que estas insertando.
cuando realizas operaciones en el registro que dispara el triger se manda el mensaje de mutacion. esto es debido a que se generaria redundancia.
busca otra manera de hacerlo talvez un procedimiento donde le pases los parametros a insertar y cambies o obtengas el valor que deseas modificar e insertes los valores.
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

RE:Error Trigger

Publicado por Sergio (39 intervenciones) el 20/08/2010 03:31:35
No estoy seguro pero quiero pensar que algo tiene que ver que este query:

select C.AGE into V_AGENCIA
from vdpedidocab c, vdbultocab b
where C.PEDS = B.PEDS and
C.DIV = B.DIV and
C.ANO = B.ANO and
C.PED = B.PED;

te está regresando más de un registro ya que no veo criterios de búsqueda por ningún lado. Eso o es posible que la tabla ORCL.AUX_EXP tiene un trigger dentro del cual se hace un SELECT a ORCL.BULTO.
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

RE:Error Trigger

Publicado por RC (6 intervenciones) el 20/08/2010 11:04:41
Pues si era la consulta, hacia la vinculación de las 2 tablas pero realmente no buscaba nada.

Muchas Gracias por la ayuda
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