mydatabase
ist ein bemerkenswert unglücklicher Name für ein Schema .
Die Trigger-Funktion könnte so aussehen:
CREATE OR REPLACE FUNCTION trg_upaft_upd_trip()
RETURNS TRIGGER AS
$func$
BEGIN
UPDATE mydatabase.trip t -- "mydatabase" = schema name (?!)
SET last_updated = now()
WHERE t.id = NEW.trip_id -- guessing column names
RETURN NULL; -- calling this AFTER UPDATE
END
$func$ LANGUAGE plpgsql;
Und muss in einem Trigger für jede zugehörige Tabelle verwendet werden (nicht für trip
selbst):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Sie müssen auch INSERT
abdecken und DELETE
(und eventuell COPY
) auf allen Untertabellen ...
Dieser Ansatz hat viele potenzielle Fehlerquellen. Betrachten Sie als Alternative eine Abfrage oder Ansicht, die das neueste last_updated
berechnet aus Untertabellen dynamisch. Wenn Sie häufig aktualisieren, ist dies möglicherweise der bessere Ansatz.
Wenn Sie selten UPDATE
und SELECT
Oft zahlt sich Ihre erste Annäherung aus.