Funcionalidad de un TRIGGER
Publicado por Daniel Rodas (10 intervenciones) el 14/01/2004 23:46:13
Hola, tengo un trigger que debe decidir entre dos opciones segun la operacion que se haga por SQL. La primera es que haga un UPDATE de otra tabla cuando ocurra cualquier cambio en una primera tabla. La segunda es que haga un UPDATE en la primera tabla si se actualiza uno de los campos de esa tabla que tenga valor 0 a valor 1.
Yo ya tengo el codigo para cada situación, y por separado funcionan perfectamente; pero cuando los junto solo hace la segunda opcion.
Adjunto el codigo para que me ayuden a ver que le hace falta. de antemano Gracias.
after update of colestadotran on ptrigger
referencing old as c1
new as c3
when (c1.COLESTADOTRAN <> c3.COLESTADOTRAN AND
c3.COLESTADOTRAN = 1)
(UPDATE ptrigger
SET COLCODEJECREV = (SELECT FINCODEJECUTI
FROM FINEJECUTIVOS
WHERE FINUSERNAME = USER),
COLFCHREVERSI = SYSDATE
WHERE (COLNUMDOCUMEN = c3.COLNUMDOCUMEN) And
(COLTIMESTAMP = c3.COLTIMESTAMP) And
(COLNUMTRANSAC = c3.COLNUMTRANSAC) And
(COLFCHTRANSAC = c3.COLFCHTRANSAC))
FOR EACH ROW
(update COLBUFFERS C2
set COLFLGDIRTYBUFF = 'S'
where ((C2.COLNUMDOCUMEN = ptrigger.COLNUMDOCUMEN)
and (C2.COLFCHACTUALI >= ptrigger.COLFCHAPLICAC)))
FOR EACH ROW;
Yo ya tengo el codigo para cada situación, y por separado funcionan perfectamente; pero cuando los junto solo hace la segunda opcion.
Adjunto el codigo para que me ayuden a ver que le hace falta. de antemano Gracias.
after update of colestadotran on ptrigger
referencing old as c1
new as c3
when (c1.COLESTADOTRAN <> c3.COLESTADOTRAN AND
c3.COLESTADOTRAN = 1)
(UPDATE ptrigger
SET COLCODEJECREV = (SELECT FINCODEJECUTI
FROM FINEJECUTIVOS
WHERE FINUSERNAME = USER),
COLFCHREVERSI = SYSDATE
WHERE (COLNUMDOCUMEN = c3.COLNUMDOCUMEN) And
(COLTIMESTAMP = c3.COLTIMESTAMP) And
(COLNUMTRANSAC = c3.COLNUMTRANSAC) And
(COLFCHTRANSAC = c3.COLFCHTRANSAC))
FOR EACH ROW
(update COLBUFFERS C2
set COLFLGDIRTYBUFF = 'S'
where ((C2.COLNUMDOCUMEN = ptrigger.COLNUMDOCUMEN)
and (C2.COLFCHACTUALI >= ptrigger.COLFCHAPLICAC)))
FOR EACH ROW;
Valora esta pregunta


0