MySQL: Neuester Stand einer Tabelle
Kalle_B
- datenbank
Hallöle,
ich schreibe ein Backup- Programm, das den neuesten Stand einer Tabelle erkennen soll:
$q = "SELECT max( last_modified ) FROM tabname"
Aber wenn ich einen Satz lösche, wird ein undefiniert anderer Satz zum neuesten und gaukelt mir einen alten Stand vor, den ich schon gesichert habe.
Gibt es irgendwo in den Tiefen vom MySQL 5 einen Vermerk, wann zuletzt ändernd (oder gar lesend) auf die Tabellen zugegriffen wird?
Die http://dev.mysql.com/doc/refman/5.0/en/show.html@title:SHOW- Syntax hilft da wohl nicht weiter.
MfG Kalle
Hallo Kalle,
Die http://dev.mysql.com/doc/refman/5.0/en/show.html@title:SHOW- Syntax hilft da wohl nicht weiter.
evtl. hilft Dir ein Klick weiter weiter
[http://dev.mysql.com/doc/refman/5.0/en/show-table-status.html]
<schnipp>
Update_time
When the data file was last updated. For some storage engines, this value is NULL. For example, InnoDB stores multiple tables in its tablespace and the data file timestamp does not apply.
</schnapp>
Viele Grüße
Stefan
Hallo Stefan,
Update_time
Ja, danke, das ist es.
Viele Grüße, Kalle
Hallo Kalle,
ich schreibe ein Backup- Programm, das den neuesten Stand einer Tabelle erkennen soll: [...]
Ich habe das Problem in tkswim so gelöst, dass bei jedem UPDATE, INSERT oder DELETE in einer Datei gespeichert wird, welche Tabellen geändert wurden[1] (da die Datenbankzugriffe über eine Datenbankklasse laufen, wird das auch bei neu eingefügten Querys automatisch erledigt) - der Cronjob der jede Nacht läuft liest diese Datei dann aus, sichert die vorgemerkten Tabellen und setzt den Merker wieder zurück.
Grüße aus Nürnberg
Tobias
[1] die Rückgabe von mysql_affected_rows() wird dabei berücksichtigt: wenn ein UPDATE oder DELETE keinen Datensatz geändert haben, wird die entsprechende Tabelle auch nicht als geändert markiert