Un trigger es un procedimiento que se ejecuta cuando ocurre un evento, como inserción (INSERT), actualización (UPDATE) o borrado (DELETE).
Una bitácora viene a ser los datos que hemos decidido guardar por ejemplo cuando se realiza una operacion en una tabla de la bd (insert, update, delete ). La bitácora puede incluir sucesos que tuvieron lugar durante la realización de dicha operación.
Una bitácora nos puede servir como medida de seguridad para guardar datos de respaldo.
Bueno, veamos con un ejemplo:
crearemos una tabla productos
create table producto
(
cod_prod int identity primary key,
nombre varchar(30),
fecha_compra datetime,
precio decimal,
)
create table bit_producto
(
cod int identity primary key,
cod_prod int,
precio decimal,
evento varchar(15),
fecha datetime,
usuario varchar(30),
aplicacion varchar(30),
terminal varchar(30)
)
Creamos el trigger que generará la bitacora
create trigger tr_producto_insert on producto
for insert
as
insert bit_producto
(cod ,
precio ,
evento ,
fecha ,
usuario ,
aplicacion ,
terminal
)
select cod_prod,
precio,
'Insert',
getdate(),
system_user,
app_name(),
host_name()
from inserted
Nota: INSERTED es una tabla especial, disponible en la operaciones INSERT y UPDATE en ella están los valores resultantes despues de la inserción o actualización.
Hacemos la prueba insertando un registro
insert into producto
(nombre,
fecha_compra ,
precio)
values(
'camotes',
'11/09/2009',
2500
)
verificamos:
select * from producto
la respuesta es:
cod_prod nombre fecha_compra precio
1 camotes 2009-09-11 00:00:00.000 2500
select * from bit_producto
cod cod_prod precio evento fecha usuario aplicacion terminal
1 2 2500 Insert 2009-09-11 22:45:15.950 sa Analizador de consultas SQL NEC