Crear una tabla de registro de actividades en SQL Server

Utilizando los descencadenadores o triggers, podemos hacer que cualquier modificación que hagamos sobre nuestra tabla de empleados EMP, se vea reflejada en una tabla que llamaremos TABLA_CONTROL. Y se añadirán todos los empleados dados de alta, modificados o eliminados en dicha tabla, incluyendo la hora en la que se realizó el cambio, el apellido del empleado y el usuario que hizo el cambio. Además en una cuarta columna indicaremos si ha sido un cambio por ALTA, MODIFICACIÓN o BAJA de/de los empleado/s.

Creamos el trigger para las bajas de la siguente manera:

CREATE TRIGGER TRG_BAJA ON EMP FOR DELETE AS
INSERT INTO TABLA_CONTROL
SELECT DELETED.APELLIDO,GETDATE(),USER_NAME(),'BAJA' FROM deleted

El de las altas:

CREATE TRIGGER TRG_ALTA ON EMP FOR INSERT AS
INSERT INTO TABLA_CONTROL
SELECT INSERTED.APELLIDO,GETDATE(),USER_NAME(),'ALTA' FROM INSERTED

Y el de las modificaciones, donde incluiremos el dato antiguo antes del cambio, por eso usamos FROM DELETED.
Si quisieramos guardar el dato cambiado, sería FROM INSERTED y INSERTE.APELLIDO en el SELECT.
O podemos poner en el campo APELLIDO el apellido original y en la columna OPERACIÓN, en lugar de poner ALTA o BAJA o MODIFICACIÓN, pues ponemos el nuevo apellido.

CREATE TRIGGER TRG_UPDATE ON EMP FOR UPDATE AS
INSERT INTO TABLA_CONTROL
SELECT DELETED.APELLIDO,GETDATE(),USER_NAME(),INSERTED.APELLIDO FROM DELETED,INSERTED

El procedimiento común es que haremos un INSERT INTO en la TABLA_CONTROL, con el contenido de la SELECT que tira de la tabla temporal que proceda en cada caso. INSERTED o DELETED.

Deja un comentario