Como Crear un log Dinámico en informix
Publicado por Juan Carlos (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.
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


0