mydatabase
er et bemærkelsesværdigt uheldigt navn for et skema .
Triggerfunktionen kunne se sådan ud:
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;
Og skal bruges i en trigger på hver relaterede tabel (ikke på trip
selv):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Du skal også dække INSERT
og DELETE
(og muligvis COPY
) på alle undertabeller ...
Denne tilgang har mange potentielle fejlpunkter. Som alternativ kan du overveje en forespørgsel eller visning, der beregner den seneste last_updated
fra undertabeller dynamisk. Hvis du opdaterer ofte, kan dette være den overlegne tilgang.
Hvis du sjældent UPDATE
og SELECT
ofte kan din første tilgang betale sig.