Zastanawiam się, jak zapytać o definicję zmaterializowanego widoku w Postgres. Dla porównania, to, co miałem nadzieję zrobić, jest bardzo podobne do tego, co możesz zrobić dla zwykłego widoku:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
co daje następujące kolumny:
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
Czy jest to możliwe w przypadku zmaterializowanych widoków?
Z moich dotychczasowych badań wynika, że zmaterializowane poglądy są celowo wyłączone z schematu_informacji, ponieważ
Information_schema może pokazywać tylko obiekty istniejące w standardzie SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Ponieważ wydaje się, że są całkowicie wykluczeni ze schematu_informacyjnego, nie jestem pewien, jak to zrobić, ale chciałbym zrobić to podwójnie:
- Zapytanie, czy istnieje konkretny zmaterializowany widok. (Do tej pory jedynym sposobem, w jaki to zrobiłem, jest utworzenie widoku mat o tej samej nazwie i sprawdzenie, czy się wysadza).
- Następnie zapytaj o definicję zmaterializowanego widoku (podobnie jak w
view_definition
kolumnie nainformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- jeśli zostanie znaleziony, nie musi to być jednak MV. Szczegóły: stackoverflow.com/questions/20582500/…