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 angelegt wird:

on update CURRENT_TIMESTAMP

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'

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.


Posted

in

by

Tags:

Comments

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert