Domanda

Mi è stato chiesto di controllare qualsiasi / tutte le modifiche in una tabella MySQL. Qualcuno conosce qualche strumento là fuori per aiutarmi a fare questo o devo scrivere la mia soluzione?

Se scrivo il mio auditing, la mia iniziale pensava che facesse una tabella separata e costruissi una serie di modifiche nel codice PHP. Qualcosa come " fieldname1 - > valore antico | fieldname2 - > valore antico, ... " ;. Se riscontri un grave problema con questo metodo, faccelo sapere.

È stato utile?

Soluzione

L'unico modo sicuro per acquisire tutte le modifiche a una tabella DB è utilizzare i trigger sul server. Il rischio di modificare il proprio codice per controllare le modifiche è che le modifiche apportate da un'altra applicazione / utente ecc. Non vengano acquisite.

Detto questo, non sono sicuro che MySQL 4 avesse il supporto per l'attivazione.

Altri suggerimenti

Utilizza un trigger per rilevare le modifiche e scrivere valori precedenti / successivi a una tabella di registro.

Se finisci per girare una soluzione a causa della mancanza di supporto del trigger, ti consiglio vivamente di non scaricare le modifiche in un BLOB di stringhe. Un giorno ti verrà chiesto di interrogare quei dati e finirai per dover fare un sacco di analisi delle stringhe per riavere i tuoi dati. (Parlo per esperienza qui.)

L'approccio più semplice è solo quello di creare una tabella di controllo shadow con tutte le stesse colonne della tabella originale, oltre a una colonna di data di modifica e un ID sequenziale. Quindi hai tutta la storia a portata di mano per ricostruire in qualunque formato ti serva e puoi interrogarla a piacimento.

SoftTree DB Audit ha il supporto MySQL, potrebbe fare quello che stai cercando:

http://www.softtreetech.com/idbaudit.htm

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top