User since
2003-09-25
182
Artikel
BenutzerIn
moins,
kann man einer MySQL-Tabelle "ansehen" , dass da jemand was geändert hat? Sprich, ob jemand was reingeschrieben, gelöscht oder geändert hat in der Tabelle. Und zwar möchte ich das so herauskriegen, ohne das dazu eine Datumseintrag in der tabelle notwendig wäre, und ohne die Tabelle zu lesen. Linux speichert ja die Zeit bei einem Dateizugriff. Gilt das auch für Mysql-Tabellen? Wenn ja, wie kommt man da ran?
gruß mordur
User since
2003-08-04
69
Artikel
BenutzerIn
Viele Datenbanksysteme bieten dir die Möglichkeit Trigger zu schreiben. Damit kannst du feststellen ob jemand in die Tabelle etwas eingefuegt hat oder ob ein Datensatz geloescht wurde etc. MySql unterstuetzt Trigger aber erst ab Version 5.x
The three chief virtues of a programmer are: Laziness, Impatience and Hubris
[Larry Wall]
User since
2003-11-28
3645
Artikel
ModeratorIn
Die Datenbanktabellen bei MySQL sind ganz normale Dateien, die beispielsweise unter /var/lib/mysql/ liegen. Dort koennte man auf die mtime gucken. Das kann aber natuerlich ganz falsch sein, je nachdem, wie der MySQL-Server arbeitet...
User since
2003-08-04
5246
Artikel
ModeratorIn
in meiner verzweiflung habe ich mal in jede tabelle ein weiteres feld namens '_lastchange' oder so aehnlich hinzugefuegt und es auf TIMESTAMP gesetzt. wenn dieses Feld nicht explizit gesetzt wird, bekommt es bei einem update oder insert die aktuelle Zeit zugewiesen (kann man auch explizit durch inserten von NULL oder NOW() setzen), und dann periodisch alle datensaetze auflisten lassen, deren Wert vom _lastchange innerhalb der letzten Periode liegt... allerdings bekommst du dadurch noch keine deletes mit, sondern nur inserts und updates...