Das vergessene Datenbankfeld: «Timestamp»

Es gibt zwei Extreme bei den Datenbankentwicklern: Der Normalisierer, der meint aus allem und jedem eine neue Tabelle machen zu müssen, damit die Abfragen auch schön mit Joins gewürzt sind und der Daten-Messie, der dieselben Informationen an allen (un)denkbaren Stellen speichert. Beiden ist gemein, dass man in ihren Tables selten das Feld ‚Timestamp‘ findet, dabei ist es so praktisch.

Bei der Entwicklung eines Datenbankmodells spielt es nicht nur eine Rolle, wie die Daten für den Endandwender gut und schnell aufbereitet werden können, auch die Pflege der Datenbank, Einfügen, Ändern, Löschen, spielt eine wichtige, aber oft vernachlässigte Rolle. Die Fragen: Wann wurde ein Datensatz erstellt? Wann wurde ein Datensatz geändert? sind wichtig, bleiben aber meistens unbeantwortet. Die Datenbank MySQL bietet, wie andere auch, eine hervorragende Technik, um beide Informationen automatisch bereitzustellen. Das Zauberwort lautet ‚timestamp‚ und bietet in geschickter Kombination genau diese Möglichkeit.

Nehmen wir an, Sie benötigen eine Tabelle in der Sie einen Artikel speichern und gleichzeitig festhalten wollen, wann der Datensatz angelegt und geändert wurde, dann brauchen Sie zwei Timestamp Felder.

Wenn Sie die obenstehende SQL-Anweisung importiert haben, z.B. mit dem allseits beliebten phpMyAdmin, dann haben Sie folgende Struktur.

Struktur der Testtabelle

Struktur der Testtabelle

Mit der Deklaration

timestamp NULL DEFAULT CURRENT_TIMESTAMP

weisen Sie den Server an, dass er beim Anlegen des Datensatzes den aktuellen Timestamp einträgt.

Mit dieser Kombination

timestamp NULL DEFAULT NULL

weisen Sie den Server an, bei jeder Änderung des Datensatzes den aktuellen Zeitstempel, NOW(), zu setzen.

Geänderter Datensatz 'Gurken'

Geänderter Datensatz \’Gurken\‘

Eine ausführliche, wenn auch nicht gut geschriebene, Anleitung finden Sie im MySQL Referenzhandbuch.

Wie man Datumsangaben geschickt aus der MySQL ausliest, habe ich hier schon erläutert.

Coding, Download, jQuery, Webapplication, Webentwicklung