¿Como puedo crear un trigger que cada vez que inserte, se actualice o elimine cualquier tabla?

Tengo una base con la siguientes tablas:

Pagos (código, codcliente, fecha, valor).

Créditos (código, codcliente, fecha, valor).

Quiero crear un trigger que cada vez que se inserte, se actualice o elimine en cualquiera de las tres tablas, guarde información en una tabla que se llame auditoria con los siguientes:

Campos(Evento, nombredetabla, código, fecha, hora) Evento: inserción, actualización o eliminación Nombredelatabla: la tabla que será afectada codigo: la llave primaria de lo que se está afectando. Fecha y hora: son tomados del sistema.

1 Respuesta

Respuesta

Tienes una opción que por lo menos a mi me ha resultado más efectiva.
Podes activar el log global de tu server y consultar la tabla general_log con diferentes vistas para obtener lo que necesitas.
Para habilitar el log, podes hacerlo de esta forma:

SET global general_log = 1;
SET global log_output = 'table';

Para ver todos los registros podes hacerlo asi:

Select argument AS Consulta, user_host AS Usuario, event_time AS Fecha from mysql.general_log where argument like '%select%';

Tambien podes discriminar las consultas por tipo, fecha, hora y usuario.

Select argument AS Consulta, user_host AS Usuario, event_time AS Fecha from mysql.general_log where argument like '%select%';

En ese ultimo caso traes los registros select, pero podes combinar tantos filtros como necesites, ya sea selects de un usuario en determinada fecha, consultas de todo tipo hechas en un horario, etc.

Para deshabilitar el log general podes hacerlo asi:

SET global general_log = 0;

Este ejemplo es para MySQL, pero supongo todos los motores tienen algo similar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas