viernes, 11 de septiembre de 2009

Creación de Bitácoras en Sql Server

En este artículo explicaré la creación de una bitácora en una base de datos haciendo uso de los triggers (disparadores).

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

8 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. explica mejor la parte de las bitacoras please

    ResponderEliminar
  3. explica mejor la parte de las bitacoras please

    ResponderEliminar
  4. marca error en " create trigger tr_producto_insert on producto " intente poniendo comilla simple en "tr_producto_insert" y "producto" pero no tuve éxito, saludos!

    ResponderEliminar
  5. Respuestas
    1. No le hagas caso a ese wey, vive por mi casa y su mamá lo tiene amarrado al tanque de gas:(

      Eliminar