mydatabase
е забележително неудачно име за схема .
Задействащата функция може да изглежда така:
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;
И трябва да се използва в тригер на всяка свързана таблица (не на trip
себе си):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Трябва също да покриете INSERT
и DELETE
(и евентуално COPY
) на всички подтаблици ...
Този подход има много потенциални точки на провал. Като алтернатива помислете за заявка или изглед, който изчислява най-новия last_updated
от подтаблици динамично. Ако актуализирате често, това може да е по-добрият подход.
Ако рядко UPDATE
и SELECT
често първият ви подход може да се изплати.