Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-03-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Trigger auditoria

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
  /* Trigger text */

  FOR SELECT RF.RDB$Field_Name CAMPO  /* Nombre del campo */
      FROM RDB$Relation_Fields RF
      WHERE RF.RDB$Relation_Name = 'TABLA' /* Aqui la tabla del trigger */
      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
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Sistema de Huellas (Pistas de auditoria) Hagen Firebird e Interbase 3 29-03-2011 13:47:12
Trigger dinámico para Auditoría de Tablas jwmoreira Firebird e Interbase 6 11-03-2010 22:53:07
Realizar auditoria de acciones de usuarios mantrax Seguridad 3 19-10-2007 05:42:33
Un trigger que dispara un procedimiento que dispara un trigger... sitrico Firebird e Interbase 5 04-06-2007 22:05:13
Triggers de auditoria en firebird 1.5 robertoe Firebird e Interbase 1 04-01-2007 04:18:11


La franja horaria es GMT +2. Ahora son las 01:29:07.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi