2008-10-20 11 views
6

On m'a demandé d'auditer tout/toutes les modifications dans une table MySQL. Est-ce que quelqu'un connaît des outils pour m'aider ou dois-je écrire ma propre solution?Comment dois-je auditer les changements dans une table MySQL (en utilisant MySQL 4)?

Si j'écris ma propre audition, mon initiale a pensé à faire une table séparée et à construire une chaîne de changements dans le code PHP. Quelque chose comme "fieldname1 -> oldvalue | fieldname2 -> oldvalue, ...". Si vous voyez un problème majeur avec cette méthode, s'il vous plaît faites le moi savoir.

Répondre

3

Le seul moyen sûr de capturer toutes les modifications apportées à une table DB consiste à utiliser des déclencheurs sur le serveur. Le risque de modifier votre propre code pour auditer les changements est que les changements d'une autre application/utilisateur etc. ne seront pas capturés. Cela dit, je ne suis pas sûr que MySQL 4 ait un support de déclenchement.

+0

Je suppose que je vais juste devoir mettre en œuvre ma solution back-asswards. Peut-être que je peux obtenir l'autorisation de mettre à jour vers MySQL 5. – Haabda

+0

Les déclencheurs ont été ajoutés dans MySQL 5.0. À ce stade, il n'y a vraiment pas de bonne raison pour ne pas passer de 4 à 5. 5.1 est en version candidate, et 6.0 est en développement Alpha. – acrosman

+0

les déclencheurs peuvent-ils suivre quel utilisateur effectue les modifications? – andho

3

Utilisez un trigger pour détecter les modifications et écrire des valeurs avant/après dans une table de journal.

+0

Malheureusement, je suis coincé avec MySQL 4. Je vais éditer ma question pour plus de clarté. Super suggestion cependant. – Haabda

2

Si vous liquidez à rouler une solution absence en raison du soutien de déclenchement, je recommande fortement que vous n » t juste vider les changements dans un blob de chaîne. Un jour, il vous sera demandé d'interroger ces données et vous devrez faire un tas d'analyse de chaîne pour récupérer vos données. (Je parle de l'expérience ici.)

L'approche la plus simple consiste simplement à créer une table d'audit miroir qui a toutes les mêmes colonnes que la table d'origine, plus une colonne de date de modification et un ID séquentiel. Ensuite, vous avez toute l'histoire à portée de main pour reconstruire dans le format dont vous avez besoin, et vous pouvez l'interroger à volonté.

Questions connexes