Triggers – Creando un historial

Creando un Historial de cambios con Trigger

Los triggers DML son procedimientos guardados en la base de datos que se disparan cuando se insertan registros, cuando se actualizan los datos de un registro o  cuando se eliminan registros.

Este ejercicio muestra como crear un Historial de cambios usando un Trigger,  el trigger se disparará cuando se inserte o actualice un registro. Para mayor información Ver Triggers



Usando la base de datos Norhtwind
use Northwind
go

La tabla Shippers (Compañías de envío) tiene los campos: ShipperID, Companyname y Phono. Primero se creará una tabla HistorialShippers con los campos Código, Nombre, Teléfono y Fecha.

Create table HistorialShippers
(
HistorialShippersCodigo nchar(10),
HistorialShippersNombre nvarchar(40),
HistorialShippersFono nvarchar(24),
HistorialShippersFecha Date
)
go

Crear el trigger para la tabla Shippers que se dispare cuando se inserta o  modifica un registro

Create trigger triggerShippersHistorial on Shippers
for insert, update
As
Begin
Insert into HistorialShippers
select inserted.ShipperID, inserted.CompanyName,
inserted.Phone, GetDate()
from inserted
End
go

Antes de insertar o actualizar registros, visualizar los registros en las tablas.

En Shippers
select * from Shippers
go

En HistorialShippers
select * from HistorialShippers
go
Puede notarse que no hay registros.

Insertar un registro en la tabla Shippers, esto hará que se dispare el Trigger y se inserte un registro en la tabla creada HistorialShippers

insert into Shippers (CompanyName, Phone)
values (‘Trainer SQL’,’87852541′)
go

Prueba con la actualización de los datos de un registro.
El registro insertado líneas arriba se generó su código 4, se cambiará su nombre y teléfono.

update Shippers set CompanyName = ‘Capacitador SQL’,
Phone = ‘963258741’ where ShipperID = 4
go

Probando con insertar otro registro

insert into Shippers (CompanyName, Phone)
values (‘Tracks Moves’,’952369985′)
go

Puede observar que la tabla HistorialShippers tiene los datos de los registros que se insertaron o que se actualizaron.

select * from HistorialShippers
go