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;