mydatabase
é um nome extremamente infeliz para um esquema . A função de gatilho pode ficar assim:
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 precisa ser usado em um gatilho em todas as tabelas relacionadas (não em
trip
em si):CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Você também precisa cobrir
INSERT
e DELETE
(e possivelmente COPY
) em todas as subtabelas ... Esta abordagem tem muitos pontos potenciais de falha. Como alternativa, considere uma consulta ou visualização que calcula o último
last_updated
de subtabelas dinamicamente. Se você atualiza com frequência, essa pode ser a abordagem superior.Se você raramente
UPDATE
e SELECT
muitas vezes, sua primeira abordagem pode pagar.