Je me demande comment interroger la définition d'une vue matérialisée dans Postgres. Pour référence, ce que j'espérais faire est très similaire à ce que vous pouvez faire pour une vue régulière:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
qui vous donne les colonnes suivantes:
table_catalog
table_schema
table_name
view_definition
check_option
is_updatable
is_insertable_into
is_trigger_updatable
is_trigger_deletable
is_trigger_insertable_into
Est-ce possible pour les vues matérialisées?
D'après mes recherches jusqu'à présent, il apparaît que les vues matérialisées sont délibérément exclues du schéma d'information, car
Le schéma_information ne peut afficher que les objets qui existent dans la norme SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Puisqu'ils semblent être entièrement exclus du schéma_information, je ne sais pas trop comment procéder, mais ce que j'aimerais faire est double:
- Recherchez s'il existe une vue matérialisée particulière. (Jusqu'à présent, la seule façon de le faire est d'essayer de créer une vue de tapis avec le même nom et de voir si elle explose.)
- Ensuite, interrogez la définition de la vue matérialisée (similaire à la
view_definition
colonne surinformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- s'il est trouvé, il ne doit pas être un MV, cependant. Détails: stackoverflow.com/questions/20582500/…