Tenemos la tabla Principal llamada Tabla1
CREATE TABLE tabla1
(
  nropersona serial,
  serial_carnet varchar(16),
  nombre varchar(24),
  apellido_paterno varchar(24),
   apellido_materno varchar(24),
  estado_civil varchar(1),
  sexo varchar(1)
)
WITHOUT OIDS;

Luego Creamos la Tabla espejo donde tendremos todos los cambios del registro de la tabla1
CREATE TABLE tabla1_old
(
  nropersona int,
  serial_carnet varchar(16),
  nombre varchar(24),
  apellido_paterno varchar(24),
  apellido_materno varchar(24),
  estado_civil varchar(1),
  sexo varchar(1)
)
WITHOUT OIDS;

— ### Activar el lenguaje para poder efectuar los trigger ###
create language plpgsql;

–### Funcion que permite hacer la auditoria en la tabla tabla1 ### —
— Function: proceso_auditoria_tabla1()
— DROP FUNCTION proceso_auditoria_tabla1();
CREATE OR REPLACE FUNCTION proceso_auditoria_tabla1()
RETURNS trigger AS
$BODY$
DECLARE
–Hecho por Gregorio Jose Bolívar Bolívar
–08/04/2011 : 8:50 am
–tabla tabla1;
–Trigger para hacer replicas para el procedo de auditoria para la table tabla1_old
–en la tabla tabla1 sea insertado en tabla1_old
BEGIN
  IF(TG_OP = ‘INSERT’)THEN
   INSERT INTO tabla1_old(
nropersona, serial_carnet, nombre, apellido_paterno, apellido_materno,
estado_civil, sexo)
VALUES (new.nropersona, new.serial_carnet, new.nombre, new.apellido_paterno, new.apellido_materno,
new.estado_civil, new.sexo);

END IF;
  IF (TG_OP = ‘UPDATE’) THEN
   INSERT INTO tabla1_old(
nropersona, serial_carnet, nombre, apellido_paterno, apellido_materno,
estado_civil, sexo)
VALUES (old.nropersona, old.serial_carnet, old.nombre, old.apellido_paterno, old.apellido_materno,
old.estado_civil, old.sexo);

END IF; return new;
END;
$BODY$
LANGUAGE ‘plpgsql’ VOLATILE
COST 100;

–### Trigger que permite hacer el llamado a la funcion proceso_auditoria_tabla1() ###
— Trigger: auditoria_tabla1_sc_disparador on tabla1
— DROP TRIGGER auditoria_tabla1_sc_disparador ON tabla1;
CREATE TRIGGER auditoria_tabla1_sc_disparador
–Hecho por Gregorio Jose Bolívar Bolívar
–08/04/2011 : 8:50 am
–Tabla tabla1;
–Trigger para hacer replicas para el procedo de auditoria para la table tabla1_old
–en la tabla tabla1 sea insertado en tabla1_old
AFTER INSERT OR UPDATE
ON tabla1
FOR EACH ROW
EXECUTE PROCEDURE proceso_auditoria_tabla1();

Anuncios