0
我的數據庫是PostgreSQL(9.3.5)。如何使用PostgreSQL中的EXECUTE語句刪除物化視圖
我們有超過500個物化視圖,並希望刪除其中的一些。
爲此,我們從這些物化視圖取出由pg_class
:
FOR MVNAME IN (SELECT relname
FROM pg_class
WHERE relkind='m')
LOOP
EXECUTE 'DROP MATERIALIZED VIEW '||MVNAME||'';
END LOOP;
在執行時它給了我們一個錯誤:
ERROR: "dimension" is not a materialized view SQL state: 42809 Hint: Use DROP FOREIGN TABLE to remove a foreign table. Context: SQL statement "DROP MATERIALIZED VIEW dimension" PL/pgSQL function test_drop_dims() line 14 at EXECUTE statement
我們可以刪除一個物化視圖使用:
DROP MATERIALIZED VIEW MVNAME;
但我們不能使用EXECUTE
語句刪除多個物化視圖。
@a_horse_with_no_name:如果您執行語句「DROP TABLE dimension」或「DROP TABLE Dimension」(同樣的事情),系統如何知道您的意思是「Dimension」還是「diMenSion」?錯誤信息報告你輸入的內容,摺疊成小寫,除非用雙引號,就是這樣。請參閱:http://sqlfiddle.com/#!15/d41d8/4009 – 2014-11-25 15:54:28