Update – Timestamp in PostgreSQL

Eine oft benötigte Funktion in Datenbankanwendungen ist, dass man in einer Tabelle eine Spalte mitführt, die den letzten Änderungszeitpunkt eines Datensatzes speichert. MySQL bietet uns die Möglichkeit so eine Spalte direkt bei der Tabellendefinition anzulegen, in dem einfach ein Feld des Typs Timestamp mit folgender Eigenschaft: „

on update CURRENT_TIMESTAMP"

angelegt wird.

In PostgreSQL ist dieser Effekt etwas aufwendiger, aber auch nicht komplizierter zu erreichen. Man benötigt dafür allerdings 2 Schritte. Zum einen muss eine Triggerfunktion angelegt werden und zum anderen muss der Trigger selbst erstellt werden. Es ist zu empfehlen, in allen Tabellen der Datenbank die Spalte für den Timestampwert gleich zu benennen, dann ist die Funktion universell einsetzbar und man muss für jede Tabelle nur noch den Trigger anlegen.

In meinem Beispiel sieht die Funktion die vom Trigger aufgerufen wird folgender Maßen aus, wobei „last_update“ der Name meiner Timestamp – Spalte ist:

CREATE OR REPLACE FUNCTION set_update_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.last_update = now();
RETURN NEW;
END;
$$ language 'plpgsql';

Hat man diese Funktion angelegt muss eben noch für jede Tabelle, die dieses Timestamp-Feld enthält folgender Trigger erstellt werden:

CREATE TRIGGER set_last_update BEFORE UPDATE OR INSERT
ON table FOR EACH ROW EXECUTE PROCEDURE
set_update_timestamp();

Also sie sehen es ist auch in PostgeSQL nicht so schwierig den Änderungszeitpunkt eines Datensatzes automatisch zu speichern.

About

You may also like...

Your email will not be published. Name and Email fields are required