状況によっては、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.
このように、ビューが実体化され、DROP コマンドが起動されると、最初の行で 'IF EXISTS' が true になるように見えますが、ビューのタイプが間違っているため失敗します (正常ではありません)。マテリアライズドビューと通常のビューの両方で機能する普遍的な回避策を誰かが提案できますか?