2008-10-20 16 views
6

Se me ha pedido que audite todos los cambios en una tabla MySQL. ¿Alguien sabe de alguna herramienta para ayudarme a hacer esto o necesito escribir mi propia solución?¿Cómo debo auditar los cambios en una tabla MySQL (usando MySQL 4)?

Si escribo mi propia auditoría, mi idea inicial fue crear una tabla separada y crear una cadena de cambios en el código PHP. Algo como "fieldname1 -> oldvalue | fieldname2 -> oldvalue, ...". Si ve un problema importante con este método, hágamelo saber.

Respuesta

3

La única forma segura de capturar todos los cambios en una tabla de base de datos es usar activadores en el servidor. El riesgo de modificar su propio código para auditar los cambios es que no se capturarán los cambios de otra aplicación/usuario, etc.

Habiendo dicho eso, no estoy seguro de que MySQL 4 tenga soporte de activación.

+0

Supongo que tendré que implementar mi solución back-asswards. Tal vez pueda obtener permiso para actualizar a MySQL 5. – Haabda

+0

Se agregaron disparadores en MySQL 5.0. En este punto realmente no hay una buena razón para no actualizar de 4 a 5. 5.1 está en versión candidata, y 6.0 está en desarrollo Alpha. – acrosman

+0

¿Pueden los disparadores rastrear qué usuario está haciendo los cambios? – andho

3

Utilice trigger para detectar cambios y escribir valores antes/después en una tabla de registro.

+0

Lamentablemente, estoy atascado con MySQL 4. Voy a editar mi pregunta para aclararla. Gran sugerencia, sin embargo. – Haabda

2

si terminan una solución por la falta de apoyo de disparo para liar, recomiendo fuertemente que usted don' Solo volcar los cambios en un blob de cadena. Un día se te pedirá que consultes esos datos y terminarás teniendo que hacer un par de análisis sintácticos para recuperar tus datos. (Hablo de experiencia aquí.)

El enfoque más simple es simplemente crear una tabla de auditoría oculta que tenga todas las mismas columnas que la tabla original, más una columna de fecha de cambio y una identificación secuencial. Luego tiene todo el historial a mano para reconstruir en cualquier formato que necesite, y puede consultarlo a voluntad.

Cuestiones relacionadas