web-dev-qa-db-fra.com

Actualisez automatiquement une vue matérialisée PostgreSQL sans utiliser de déclencheurs

J'ai créé une vue matérialisée nommée view_table_A sur une table d'enveloppe de données étrangère table_A. Ce que je veux, c'est que la vue soit automatiquement mise à jour après chaque nouvelle insertion dans table_A. J'ai essayé de le faire avec des déclencheurs mais cela n'a pas fonctionné.

Est-il possible d'actualiser automatiquement une vue matérialisée sans utiliser de déclencheurs?

11
James

Comme a_horse_with_no_name l'a dit dans un commentaire:

Non, ce n'est pas possible. Vous avez besoin d'une sorte de planificateur qui exécute l'actualisation de la vue matérialisée, par exemple pg_cron ou quelque chose au niveau du système d'exploitation - a_horse_with_no_name

Alternativement, si vous avez besoin d'un MATERIALIZED VIEW qui s'actualise lorsque vous exécutez SELECT, supprimez simplement MATERIALIZED et utilisez un VIEW normal. La matérialisation n'ajoute qu'un cache périodique. Il n'est nécessaire que lorsque la requête elle-même est trop lente ou chaude.

11
Evan Carroll