Como devo auditar alterações em uma tabela MySQL (usando MySQL 4)?
Pergunta
Me pediram para auditar quaisquer / todas as alterações em uma tabela MySQL. Alguém sabe de quaisquer ferramentas lá fora para me ajudar a fazer isso ou que eu preciso para escrever a minha própria solução?
Se eu escrever meu próprio audting, meu pensamento inicial para fazer uma tabela separada e construir uma série de mudanças no código PHP. Algo como "fieldname1 -> OldValue | fieldname2 -> OldValue, ...". Se você ver um grande problema com este método, por favor me avise.
Solução
A única maneira infalível para capturar todas as alterações em uma tabela DB é usar gatilhos no servidor. O risco de modifing seu próprio código para auditar as mudanças é que muda de outro aplicativo / user etc não serão capturados.
Dito isto, eu não tenho certeza que o MySQL 4 teve o apoio do gatilho.
Outras dicas
Se você acabar mão-rolando uma solução devido a falta de apoio gatilho, eu recomendo fortemente que você não simplesmente despejar as mudanças em uma bolha string. Um dia você será solicitado a consulta que dados e você vai acabar tendo que fazer um monte de análise de cadeia para voltar seus dados para fora. (Falo por experiência aqui.)
A abordagem mais simples é apenas para criar uma sombra tabela de auditoria que tem todas as mesmas colunas como a tabela original, além de uma coluna de data mudança e um ID seqüencial. Então você tem toda a história na mão para reconstruir em qualquer formato que você precisa, e você pode consultá-lo à vontade.
SoftTree DB Auditoria tem suporte ao MySQL, pode fazer o que você está depois: