定义新的具体化视图。
语法
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 部门中工作的所有员工的相关信息。