Você está na página 1de 2

CCREATE TABLE audit_estudiante (

codigo integer NOT NULL,


nombre varchar(30),
direccion varchar(30),
telefono numeric(10),
email varchar(30),
fecha_nac date,
id integer,
accion text,
ip text,
hora time,
fecha date,
username text
);
ALTER TABLE public.audit_estudiante OWNER TO "ING-JULIAN";
CREATE OR REPLACE FUNCTION auditoria_estudiante()
RETURNS trigger AS
$BODY$Declare
_cod integer;
_nom varchar(30);
_dir varchar(30);
_tel numeric(10);
_em varchar(30);
_fn date;
_ip text;
_hora time;
_fecha date;
_username text;
BEGIN
_ip=inet_client_addr();
_hora= current_time;
_fecha= current_date;
_username=current_user;
IF (TG_OP='INSERT' or TG_OP='UPDATE') then
_cod= NEW.codigo;
_nom= NEW.nombre;
_dir=NEW.direccion;
_tel= NEW.telefono;
_em= NEW.email;
_fn=NEW.fecha_nac;
insert into audit_estudiante(codigo,nombre,direccion,tel
efono,email,fecha_nac,accion,ip,hora,fecha,username)
values (_cod,_nom,_dir,_tel,_em,_fn,TG_OP,_ip,_hora,_fec
ha,_username);
ELSE IF (TG_OP='DELETE') then
insert into audit_estudiante(codigo,nombre,direc
cion,telefono,email,fecha_nac,accion,ip,hora,fecha,username)
values (OLD.codigo,OLD.nombre,OLD.direccion,OLD.
telefono,OLD.email,OLD.fecha_nac,TG_OP,_ip,_hora,_fecha,_username);
End IF;
End IF;
Return OLD;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION auditoria_estudiante()
OWNER TO "ING-JULIAN";
CREATE TRIGGER auditoria
AFTER INSERT OR UPDATE
ON estudiante
FOR EACH ROW
EXECUTE PROCEDURE auditoria_estudiante();
CREATE TRIGGER auditoria2
BEFORE DELETE
ON estudiante
FOR EACH ROW
EXECUTE PROCEDURE auditoria_estudiante();
update estudiante set telefono = 2334388 where codigo = 1;
select * from audit_estudiante;
delete from estudiante where codigo = 6;

Você também pode gostar