mydatabase
es un nombre notablemente desafortunado para un esquema .
La función de activación podría verse así:
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;
Y debe usarse en un disparador en cada tabla relacionada (no en trip
mismo):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
También debe cubrir INSERT
y DELETE
(y posiblemente COPY
) en todas las subtablas...
Este enfoque tiene muchos puntos potenciales de falla. Como alternativa, considere una consulta o vista que calcule el último last_updated
de subtablas dinámicamente. Si actualiza con frecuencia, este podría ser el mejor enfoque.
Si rara vez UPDATE
y SELECT
a menudo, su primer acercamiento podría pagar.