Generar secuencias de fecha con CTE Recursivo

En ocasiones necesitamos generar secuencias numéricas o de fechas para diferentes propósitos. En este caso vamos a ver un script para generar una secuencia de fechas y aprovechar diferentes funciones del sistema para llenar una tabla de dimensión de tiempo de un datamart.

 

Para ello vamos a usar Common Table Expresions o CTE recursivo (). La recursividad nos permite iterar para generar la secuencia. Vamos a mostrar el script () y a explicar de qué se trata: […]

Procedimientos almacenados ordenados

Los procedimientos almacenados () son un elemento importante en el desarrollo de aplicaciones con SQL Server. Al ser un componente de programación, su implementación y mantenimiento son vitales para el correcto funcionamiento de los sistemas. Un aspecto importante a tener en cuenta es el orden que se debe aplicar cuando se construye un procedimiento almacenado. En este artículo proponemos una plantilla básica sobre la cual […]

Trigger genérico para auditar cambios en una tabla

El siguiente trigger permite auditar los cambios (Inserciones, Actualizaciones y eliminaciones) a una tabla. Es un trigger genérico. Es decir, el mismo trigger funciona para cualquier tabla de la base de datos. Hay que tener en cuenta solo tres cosas:

  1. Se debe crear una tabla de log para almacenar la información de auditoría.
  2. En el script hay que cambiar manualmente el nombre de la tabla sobre la cual se esta creando el trigger.
  3. Solo funciona con tablas que tienen llave primaria.

Este trigger fue diseñado por Nigel Rivett y funciona con las versiones 2005 en adelante. He hecho cambios mínimos de forma y he traducido e incluido comentarios para hacer mas legible y entendible el script.

Lo primero que hay que hacer es crear la tabla de auditoría, sobre la cual el trigger escribirá el detalle de las transacciones realizadas:

CREATETABLEdbo.logTransacciones(

  TipoTrnchar(1),

  Tablavarchar(128),

  PKvarchar(1000),

  Campovarchar(128),

  ValorOriginalvarchar(1000),

  ValorNuevovarchar(1000),

  FechaTrndatetime,

  Usuariovarchar(128))

GO

.

En esta tabla se almacena el tipo de transacción(I-Insert, U-Update, D-Delete), el nombre de la tabla, la llave del registro, el o los campos que han sufrido algún cambio, el valor original y el valor nuevo para las actualizaciones y por ultimo la fecha en la que se hizo el cambio y el usuario que lo ejecutó. Cualquier cambio realizado en cualquier tabla de la base de datos que tenga el trigger, será almacenado aquí

Vamos ahora a crear la tabla Cliente, que nos servirá para […]