У меня есть представление в моем PostgreSQL, которое может быть как обычным, так и материализованным, в зависимости от некоторых обстоятельств. Я пытаюсь написать запрос, который точно и без ошибок отбрасывает представление, независимо от того, какой тип у него есть на данный момент. Однако это не кажется легким. Когда я пытаюсь использовать следующий код, я получаю сообщение об ошибке:
DROP VIEW IF EXISTS {{ schema }}.{{ viewName }};
DROP MATERIALIZED VIEW IF EXISTS {{ schema }}.{{ viewName }};
SQLSTATE[42809]: Wrong object type: 7 ERROR: "{{ viewName }}" is not a view
HINT: Use DROP MATERIALIZED VIEW to remove a materialized view.
Таким образом, похоже, что «ЕСЛИ СУЩЕСТВУЕТ» возвращает true в первой строке, когда представление материализуется, команда DROP запускается, но терпит неудачу, потому что тип представления неверен (это ненормально). Может ли кто-нибудь предложить универсальный обходной путь, который будет работать как для материализованного, так и для обычного просмотра?