我在我的 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.
因此,当视图物化时,第一行中的 'IF EXISTS' 结果似乎为真,DROP 命令启动,但由于视图类型错误(不正常)而失败。谁能提出一个通用的解决方法,既适用于物化视图又适用于普通视图?