-
Crear tabla de log para una tabla de SQL
Supongamos que queremos registrar todos los cambios que se realizan en la tabla devoluciones y que esa tabla tiene 3 campos.
Lo primero que tenemos que hacer es crear la tabla correspondiente para el log. Para ello ejecutamos:
create table log_devoluciones as select * from devoluciones where 1=2;
La parte de where 1=2 es para que copie la tabla con todos sus campos, pero sin los registros de esa tabla.
Lo siguiente que vamos a hacer agregar dos campos a esa tabla, que serán los campos donde registraremos la fecha en la que se realizan las modificaciones que queremos loguear.
alter table log_devoluciones add ( FechaInicio timestamp with time zone not null, FechaFin timestamp with time zone not null );
Listo, ya tenemos la tabla de log creada. Ahora vamos a crear el disparador para que cada cambio que se ejecute en la tabla, se registre en la tabla de log:
create or replace trigger tTablaDevolucion after insert or update or delete on devolucion for each row declare vAhora TIMESTAMP; begin select current_timestamp into vAhora from Dual; update log_devolucion set FechaFin = vAhora where FechaFin is null and CampoPrimaryKey = :old.CampoPrimaryKey ; if :new.CampoPrimaryKey is not null then insert into log_devolucion (Campo1, Campo2, Campo3, FechaInicio, FechaFin) values (:new.Campo1, :new.Campo2, :new.Campo3, vAhora, null) ; end if; end;
.
Los hacks de hacks4geeks son minitutoriales rápidos pensados para geeks con conocimiento informático avanzado. Si no entiendes o no consigues ejecutar un hack de esta web considera suscribirte a Premium para solicitar asistencia sobre el mismo.