Kalle_B: MySQL: Neuester Stand einer Tabelle

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

  1. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Hallo Stefan,

      Update_time

      Ja, danke, das ist es.

      Viele Grüße, Kalle

  2. 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

    --