Мені цікаво, як запитувати визначення матеріалізованого виду в Postgres. Для довідки, те, що я сподівався зробити, дуже схоже на те, що ви можете зробити для звичайного перегляду:
SELECT * FROM information_schema.views WHERE table_name = 'some_view';
що дає вам наступні стовпці:
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
Чи можливо це для матеріалізованих поглядів?
З мого дослідження поки що виходить, що матеріалізовані погляди свідомо виключаються з інформаційної схеми, тому що
Інформаційна схема може показувати лише об'єкти, які існують у стандарті SQL.
( http://www.postgresql.org/message-id/3794.1412980686@sss.pgh.pa.us )
Оскільки вони, як видається, повністю виключені з information_schema, я не знаю, як це зробити, але те, що я хотів би зробити, це подвійно:
- Запитайте, чи існує певний матеріалізований вигляд. (Поки єдиний спосіб, який я знайшов це зробити, - спробувати створити килимок з таким же ім'ям і побачити, чи він підірветься.)
- А потім запитуйте визначення матеріалізованого виду (аналогічно
view_definition
стовпцю наinformation_schema.views
).
SELECT to_regclass('some_schema.some_mat_view')
- якщо він знайдеться, він не повинен бути MV, хоча. Детальніше: stackoverflow.com/questions/20582500/…