Vinzenz Mai: 2 Timestamps

Beitrag lesen

Hallo

Ich hab hier schon ein paar mal gelesen, daß bei jeder Änderung eines Datensatzes bei einer Mysql-datenbank sich der Timestamp mitaktualisiert und somit nicht mehr der Timestamp des Erstellungsdatums sondern jener des letzten Änderungsdatums in der DB steht. Als Lösung für dieses Problem wurde hier immer darauf verwiesen, man muß eben 2 Timestamp-Spalten anlegen, da bei zwei Timestamps nur der ERSTE geändert wird.

Nein, das steht hier ganz bestimmt nicht *immer*. Es ist Unsinn. Es ist falsch. Es wird *nicht* *nur* der ERSTE geändert. Es wird die TIMESTAMP-Spalte geändert, bei der dies festgelegt ist, ich zitiere aus dem Handbuch. Die magische Funktionalität kann auch nicht über zwei verschiedene Spalten gehen:

<zitat>
    For one TIMESTAMP column in a table, you can assign the current timestamp
    as the default value and the auto-update value. It is possible to have the
    current timestamp be the default value for initializing the column, for
    the auto-update value, or both. It is not possible to have the current
    timestamp be the default value for one column and the auto-update value
    for another column.

Any single TIMESTAMP column in a table can be used as the one that is
    initialized to the current date and time, or updated automatically. This
    need not be the first TIMESTAMP column.
</zitat>

Worüber wunderst Du Dich?

Was muß ich also tun, wenn ich 2 Timestampfelder möchte, damit mir der ursprüngliche Erstellunszeitpunkt auch bei Datensatzveränderungen erghalten bleibt?

Eines der folgenden könnte genügen:

  • im INSERT-Statement den Erstellungszeitpunkt festhalten
  • im UPDATE-Statement den Updatezeitpunkt festhalten
  • einen INSERT-Trigger verwenden, der den Erstellungszeitpunkt festhält
  • einen UPDATE-Trigger verwenden, der den Updatezeitpunkt festhält
  • INSERT- oder UPDATE-Operationen nur über Stored Procedures durchführen,
      die die gewünschte Aktualisierung vornehmen
  • ein anderes DBMS verwenden, das Deiner Anforderung genügt ...

Freundliche Grüße

Vinzenz