mydatabase
je pozoruhodně nešťastný název pro schéma .
Spouštěcí funkce může vypadat takto:
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;
A musí být použit ve spouštěči na každém souvisejícím stole (nikoli na trip
sám):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Musíte také zakrýt INSERT
a DELETE
(a případně COPY
) na všech podtabulkách ...
Tento přístup má mnoho potenciálních chyb. Jako alternativu zvažte dotaz nebo pohled, který počítá nejnovější last_updated
z podtabulek dynamicky. Pokud aktualizujete často, může to být lepší přístup.
Pokud zřídka UPDATE
a SELECT
často se vám může vyplatit první přístup.