Informix - Como Crear un log Dinámico en informix

   
Vista:

Como Crear un log Dinámico en informix

Publicado por Juan Carlos jmgysoft@gmail.com (1 intervención) el 25/05/2016 23:29:18
Buena, tengo una inquietud y quisiera expresarla en este foro, he buscado por muchos lugares y no he conseguido nada referente a este caso, mi caso es el siguiente:

Quiero crear un log de Auditoria dinámico. siempre que un campo de una tabla (x) sufra un cambio quiero saberlo, pero no quiero comparar campo por campo ya que es un poco tedioso y ademas habria que modificar mi procedure cada vez que se agregue un campo a la tabla. si pueden por favor darme alguna solución para mi problema estaria eternamente agradecido, gracias de antemanos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
CREATE PROCEDURE informix.sp_logepreprll()
REFERENCING OLD O NEW N FOR epreprem
DEFINE lDescripcion NCHAR(8000);
DEFINE lcolname NVARCHAR(100);
LET lDescripcion='';
        FOREACH SELECT
                    colname
                     INTO lcolname
                        FROM syscolumns
                        INNER JOIN systables ON syscolumns.tabid=systables.tabid
                        WHERE tabname='TableName'
 
      IF O.row(lcolname)<>N.row(lcolname) THEN
        LET lDescripcion=lDescripcion || lcolname || '(' ||O.row(lcolname)||'->'||N.row(lcolname)||')';
      END IF
 
END FOREACH;
 
IF lDescripcion<>'' THEN
INSERT INTO TableLog VALUES (0,O.cuecta_numid,CURRENT YEAR TO SECOND ,lDescripcion,LOWER(USER));
END IF
 
END PROCEDURE;
GO
CREATE TRIGGER informix.trx_sp_logepreprll UPDATE ON informix.epreprem
            REFERENCING  OLD AS O NEW AS N
                for each row
                (
                 EXECUTE PROCEDURE sp_logepreprll() WITH TRIGGER REFERENCES
                );
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