定義一個新的物化視圖。

語法

CREATE MATERIALIZED VIEW name
[build clause][create mv refresh] AS subquery

其中build_clause是:

BUILD {IMMEDIATE | DEFERRED}    

其中create mv refresh是:

REFRESH [COMPLETE] [ON DEMAND]

參數

參數名稱 描述
name 要創建的視圖名稱(可以采用模式限定的方式引用)。
subquery select語句用于指定視圖的內容。關于更多有效查詢的信息請參見select語句。
build clause 通過包括build_clause來指定填充視圖的時間。指定BUILD IMMEDIATE或BUILD DEFERRED可分別實現下列操作:
  • build immediate 用于命令服務器立刻對視圖進行填充。這是一種缺省行為。
  • build deferred 用命令服務器對視圖稍后進行填充(在refresh操作期間)。
create mv refresh 通過包括create mv refresh子句指定更新物化視圖內容的時間。子句包含關鍵字refresh, 且關鍵字后帶有complete和/或on demand。其中:
  • complete 用于命令服務器丟棄當前內容, 且在刷新物化視圖時,通過執行視圖的定義查詢來重載物化視圖。
  • ON demand 用于命令服務器根據要求來刷新物化視圖,這時需要調用包dbms_mview或調用Postgres refresh materialized view語句。這是一種缺省行為。

描述

create materialized view定義了一個查詢視圖。這個查詢視圖不會因為每次在查詢中被引用而更新。通過缺省,在創建視圖時,這個視圖會自動填充信息。您可以包括關鍵字build deferred來延遲視圖的填充。

物化視圖可以采用模式限定的方式引用。 如果在調用create materialized view命令時,您指定了一個模式名,那么這個視圖就會創建于指定的模式中。所創建的視圖名必須區別于相同模式下的其它任何視圖、表、序列或索引。

說明
  • 物化視圖為只讀模式,也就是說服務器不允許對物化視圖進行insert、update或delete操作。
  • 能否訪問視圖中引用的表,是由視圖的擁有者來決定的。視圖用戶必須有授權才能夠調用視圖所使用的全部函數。
  • 更多關于Postgres refresh materialized view命令的信息,請參見PostgreSQL 核心文檔

示例

下列語句創建了名為dept_30的物化視圖:

CREATE MATERIALIZED VIEW dept_30 BUILD IMMEDIATE AS SELECT * FROM emp WHERE deptno = 30;