mydatabase
est un nom remarquablement malheureux pour un schéma .
La fonction de déclenchement pourrait ressembler à ceci :
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;
Et doit être utilisé dans un déclencheur sur chaque table associée (pas sur trip
lui-même):
CREATE TRIGGER upaft_upd_trip
AFTER UPDATE ON mydatabase.trip_detail
FOR EACH ROW EXECUTE PROCEDURE trg_upaft_upd_trip();
Vous devez également couvrir INSERT
et DELETE
(et éventuellement COPY
) sur toutes les sous-tables...
Cette approche présente de nombreux points de défaillance potentiels. Comme alternative, considérez une requête ou une vue qui calcule le dernier last_updated
à partir de sous-tables de manière dynamique. Si vous mettez souvent à jour, cela pourrait être l'approche la plus efficace.
Si vous UPDATE
rarement et SELECT
souvent, votre première approche peut être payante.