Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/01/2011, 13:55
Avatar de marlanga
marlanga
 
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 13 años, 4 meses
Puntos: 206
Respuesta: Logs para acciones del usuario.

Auditar el acceso a las tablas lo hace MYSQL automáticamente, como te han dicho por ahí, pero sólo es util si has creado un usuario de la BD por cada usuario de tu aplicación web. Que seguro que no lo has hecho así (habrás creado un sólo usuario con todos los permisos). Así todos los cambios te dirá que los hizo ese usuario, y esa información es relativamente inútil.
Otra forma es crear un sistema de logeo para tu aplicación, y cada vez que alguien realize una modificación en tu base de datos, lanzarías un INSERT sobre una tabla creada por tí aposta, por ejemplo, AUDITORIAS con los campos id_auditoria, usuario (que realizó el cambio), acción (insertar, eliminar, actualizar), tabla (sobre la que hizo el cambio), campo (campo que modificó), valor_viejo, valor_nuevo.

En el caso de insercción, en campo pones el nombre/nombres del campo ID de esa tabla, valor viejo debería quedar vacío, y valor nuevo tendría el ID del nuevo registro creado.

En el caso de eliminación, en campo pones eel nombre/nombres del campo ID, valor viejo debería quedar vacío, y valor nuevo tendría el ID del nuevo registro eliminado. Perderías el resto de datos. Si los quieres guardar, supongo que ya te he dado una idea de cómo hacerlo.

Y en caso de update, tendrías que hacer una insercción por cada campo al que se va a cambiar el valor en la consulta UPDATE. campo es el campo a cambiar, valor_viejo y valor_nuevo son autodescriptivos.

Existe otra forma ratera total, que es que la tabla auditoría sólo tendría 3 campos: id_auditoria, usuario, consulta.
Consulta sería la cadena MYSQL con la orden íntegra. Así sabrías qué orden ha ejecutado los usuarios.

No estaría demás añadir otro campo más, FECHA, para saber la fecha y hora en la que se produzco el cambio.