mydatabase
è un nome straordinariamente sfortunato per uno schema .
La funzione di attivazione potrebbe essere simile a questa:
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;
E deve essere utilizzato in un trigger su ogni tabella correlata (non su trip
stesso):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Devi anche coprire INSERT
e DELETE
(ed eventualmente COPY
) su tutte le sottotabelle ...
Questo approccio ha molti potenziali punti di errore. In alternativa, considera una query o una vista che calcola l'ultimo last_updated
da sottotabelle in modo dinamico. Se aggiorni spesso questo potrebbe essere l'approccio migliore.
Se esegui raramente UPDATE
e SELECT
spesso, il tuo primo approccio potrebbe ripagare.