Está en la página 1de 5

Creación de

bitácora

Avila Cardenas Ricardo


Crear una tabla bitácora
Debe contener los mismos datos y tipos de dato que la tabla original, puede
agregarse información útil como el usuario que realizó el cambio, la fecha y la
operación del movimiento.
create table bitacora_rentas (
id bigint not null identity (1, 1),
id_usuario int not null,
operacion char(2) not null,
folio int,
cve_p int,
cve_c int,
cve_devol int,
fecha_prestamo date,
dias int,
costoXdia varchar(10),
constraint bitacora_escritor_pk primary key (id),
constraint bitacora_escritor_op_chk check (operacion in ('II', 'UV','UN', 'DD')),
);

Crear lo triggers
Se crean los trigger para el insert, el update y el delete en la tabla deseada, inserta
los datos necesarios en la bitácora correspondiente.
create trigger tr_insert_bitacora_rentas on itc_Renta
after insert as
insert into bitacora_rentas
(id_usuario,operacion,folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia)
select user_id(),'II',folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia
from INSERTED;
print 'Trigger insert';

create trigger tr_update_bitacora_rentas on itc_Renta


after update as
insert into bitacora_rentas
(id_usuario,operacion,folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia)
select user_id(),'UV',folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia
from deleted;
insert into bitacora_rentas
(id_usuario,operacion,folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia)
select user_id(),'UN',folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia
from inserted;
print 'Trigger after update disparado';

create trigger tr_delete_bitacora_escritor on itc_Renta


after delete as
insert into bitacora_rentas
(id_usuario,operacion,folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia)
select user_id(),'DD',folio,cve_p,cve_c,cve_devol,fecha_prestamo,dias,costoXdia
from deleted;
print 'Trigger after delete disparado';

Usuario y rol
CREATE LOGIN bitacora
WITH PASSWORD = '12345'
MUST_CHANGE, CHECK_EXPIRATION = ON;

CREATE USER bitacora


FOR LOGIN bitacora;

GRANT all privileges


ON [dbo].[bitacora_rentas]
TO bitacora;

exec sp_addrolemember db_owner , bitacora;

Probando
insert into itc_Renta(cve_p, cve_c, cve_devol, fecha_prestamo, dias, costoXdia)
values
(3,4,1,getdate(),4,40),
(2,1,2,getdate(),2,30);

select * from bitacora_rentas;


update itc_Renta
set dias = 4
where folio = 28;

select * from bitacora_rentas;

delete from itc_Renta


where folio = 28;

select *from bitacora_rentas;


Borrar lo creado
drop table bitacora_rentas;
drop trigger tr_insert_bitacora_rentas;
drop trigger tr_update_bitacora_rentas;
drop trigger tr_delete_bitacora_escritor;

También podría gustarte