Ya hemos visto como activar el log de MySQL para tener un fichero con todas las consultas realizadas a la base de datos.
Además de esto, también podemos guardar en una tabla un registro de cambios en la base de datos, como el usuario, fecha y campo modificado. Esto se hace usando los triggers o disparadores de MySQL.
Activar triggers en phpmyadmin
- Seleccionamos nuestra base de datos y pulsamos la pestaña Triggers o disparadores que aparece arriba a la derecha.
- Escogemos agregar disparador y nos aparecerá una ventana como esta, pero vacía:
Los datos que debemos indicar son:
- Nombre del disparador: Un nombre para identificar al disparador
- Tabla: La tabla de nuesta base de datos de la que queremos registrar los cambios
- Tiempo: BEFORE o AFTER. Indica si el trigger se ejecutará antes o después de ejecutarse la consulta.
- Evento: INSERT, UPDATE o DELETE. Aquí indicamos cuando queremos que se ejecute el trigger: cuando haya una creación de nuevo registro, una actualización o un borrado en la tabla indicada anteriormente.
- Definición: Indicamos la consulta que queremos ejecutar cuando se cumplan las condiciones indicadas anteriormente
- Definidor: El usuario MySQL que creó el trigger. Puedes dejarlo en blanco.
En este caso, justo después de que se inserte un nuevo registro en la tabla agenda, se ejecutará nuestra consulta:
INSERT IGNORE INTO agenda-log.cambios (id,user) VALUES (NEW.id,USER())
Esto insertará en la tabla 'cambios' de la base de datos 'agenda-log' un nuevo registro con el id del usuario creado y el nombre e IP del usuario MySQL que lo creó.
Registrar fecha y hora de los cambios
Si queremos saber también la fecha y hora del cambio, debemos añadir, en la tabla donde registramos los cambios (cambios en nuestro ejemplo) un nuevo campo de tipo timestamp y como valor por defecto CURRENT_TIMESTAMP
Deja una respuesta