定義新的具體化檢視。
文法
CREATE MATERIALIZED VIEW name [build_clause][create_mv_refresh] AS subquery其中build_clause為:
BUILD {IMMEDIATE | DEFERRED}其中create_mv_refresh為:
REFRESH [COMPLETE] [ON DEMAND]說明
CREATE MATERIALIZED VIEW 定義查詢的視圖,每次在查詢中引用視圖時不更新該視圖。預設情況下,視圖在建立時填充;您可以包括 BUILD DEFERRED 關鍵字以將視圖的填充延後。
具體化檢視可以是 schema 限定的;如果您在調用 CREATE MATERIALIZED VIEW 命令時指定 schema 名稱,則將在指定的 schema 中建立視圖。視圖名稱不得與同一 schema 中其他所有視圖、表、序列或索引的名稱相同。
說明 具體化檢視是唯讀,伺服器不允許在視圖上執行 INSERT、UPDATE 或 DELETE。
對視圖中所參考資料表的存取權限由視圖所有者的許可權決定;視圖的使用者必須有權調用視圖所使用的全部函數。
有關 Postgres REFRESH MATERIALIZED VIEW 命令的更多資訊,請參見 PostgreSQL 樞紐文件。
參數
| 參數 | 說明 |
| name | 要建立的視圖的名稱(可能是 schema 限定的)。 |
| subquery | 一個指定視圖內容的 SELECT 語句。有關有效查詢的更多資訊,請參見 SELECT。 |
| build_clause | 包括 build_clause 以指定應何時填充視圖。指定 BUILD IMMEDIATE 或 BUILD DEFERRED:
|
| create_mv_refresh | 包括 create_mv_refresh 子句以指定應何時更新具體化檢視的內容。子句包含 REFRESH 關鍵字,後跟 COMPLETE 和/或 ON DEMAND,其中:
|
樣本
以下語句建立名為 dept_30 的具體化檢視:
CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;該視圖包含從 emp 表中檢索的、在 30 部門中工作的所有員工的相關資訊。