mydatabase
is een opmerkelijk ongelukkige naam voor een schema .
De triggerfunctie kan er als volgt uitzien:
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;
En moet worden gebruikt in een trigger op elke gerelateerde tafel (niet op trip
zelf):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Je moet ook INSERT
. afdekken en DELETE
(en eventueel COPY
) op alle subtafels ...
Deze aanpak heeft veel potentiële faalpunten. Overweeg als alternatief een zoekopdracht of weergave die de laatste last_updated
. berekent dynamisch uit subtabellen. Als je vaak bijwerkt, is dit misschien de beste aanpak.
Als je zelden UPDATE
en SELECT
vaak kan je eerste benadering lonen.