Hola a todos,
estoy intentando hacer un trigger que audite una serie de campos de varias tablas.
Como no quiero estar poniendo el churro de campos de cada tabla, estoy intentando hacer un trigger genérico que me ayude al menos a reutilizar el código.
El problema es que no consigo dar con el problema.
He aquí el código maldito
Código SQL
[-]
AS
declare variable WCAMPO varchar(50);
declare variable sentencia varchar(100);
begin
FOR SELECT RF.RDB$Field_Name CAMPO
FROM RDB$Relation_Fields RF
WHERE RF.RDB$Relation_Name = 'TABLA'
INTO :WCAMPO
DO
BEGIN
sentencia = 'IF (new.'||:WCAMPO ||'IS NOT NULL) THEN '||
'BEGIN '||
'IF (OLD.'||:WCAMPO||' <> NEW.'||:WCAMPO||' ) THEN ' ||
'INSERT INTO AUDITORIA (IDAUDITORIA, FECHA, USUARIO, IDREGISTRO,'||
'TABLA, CAMPO, VALORVIEJO,VALORNUEVO) '||
'VALUES (GEN_ID(AUDITORIA,1), '||'''NOW'''||', NEW.USUARIOMODIF, NEW.IDPOLIZA,'||
'''POLIZA'','||:WCAMPO||', CAST(OLD.'||:WCAMPO||' AS VARCHAR(50)),CAST( NEW.'||:WCAMPO||' AS VARCHAR(50)) )'';'||
'END' ;
END
execute statement sentencia;
end
Pues eso, que me estoy haciendo la picha un lio.
Debo decir que si hago un store proc. que me devuelva la variable SENTENCIA - que es la que se ejecuta después con el execute statement - y la copio en el ibexpert, me la ejecuta bien
O sea, que estoy enrocado.
Agradecería cualquier ayuda de los maestros.
Gracias y un saludo