Zum Inhalt

Aktualisierungs-Timestamps in Tabellen

Oft besteht der Bedarf, in einer Tabelle Zeitpunkt der Anlage eines Datensatzes sowie der letzten Änderung identifizieren zu können. Der einfachste Weg ist, in einer Tabelle zwei Timestamp-Spalten anzulegen, eine für den Anlagezeitpunkt und einen für die letzte Änderung.

Über den Default-Wert einer Spalte lässt sich automatisch der Anlagezeitpunkt in den Datensatz schreiben.

Beim Zeitpunkt der letzten Änderung ist das etwas schwieriger – dafür muss man zu einem Trigger greifen.

Tabelle anlegen

CREATE TABLE table_name (
  id           INTEGER AUTOINCREMENT,
  description  VARCHAR(100) NOT NULL,
  created_at   DATETIME DEFAULT CURRENT TIMESTAMP
  updated_at   DATETIME
);

Die Spalte created_at wird durch die Angabe eines DEFAULT-Wertes (nur!) beim Anlegen eines Datensatzes auf den jeweiligen jetzigen Zeitpunkt gesetzt. Die Spalte updated_at bleibt erst einmal leer.

Trigger anlegen

CREATE TRIGGER tub_TABLE_NAME_TS
BEFORE UPDATE ORDER 1
ON table_name
REFERENCING NEW AS newrec
FOR EACH ROW
BEGIN
  SET newrec.updated_at = CURRENT TIMESTAMP;
END;

Dieser Trigger wird beim Ändern eines Datensatzes gefeuert (genauer: vor dem Festschreiben der Änderung) und setzt die Spalte updated_at auf den jetzigen Zeitpunkt.

Feedback / Kontakt

Wenn Sie Fragen oder Anregungen zum Artikel Aktualisierungs-Timestamps in Tabellen haben, senden Sie mir bitte eine E-Mail an: sql-anywhere+timestamps@technotes.jakoubek.net