pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
CREATE VIEW — 定义一个新视图
CREATE VIEWview[ (column name list) ] AS SELECTquery
view要创建的视图的名称。
column name list一个可选的名称列表,用作视图的列。如果给出,这些名称会覆盖本应从 SQL 查询推导出的列名。
query一条 SQL 查询,它将提供视图的列和行。
关于有效参数的更多信息,参见 SELECT 语句。
CREATE视图创建成功时返回的消息。
ERROR: Relation 'view' already exists如果指定的视图已存在于数据库中,就会出现这个错误。
NOTICE: Attribute 'column' has an unknown type如果你不指定类型,创建出的视图就会带有一个未知类型的列。例如,下面的命令会产生一条警告:
CREATE VIEW vista AS SELECT 'Hello World'
而这条命令则不会:
CREATE VIEW vista AS SELECT text 'Hello World'
CREATE VIEW 将定义一个表的一个视图。该视图不会被物理物化;相反,会自动生成一条查询重写检索规则来支持对视图的检索操作。
目前视图是只读的:系统不允许在视图上执行插入、更新或删除。你可以通过创建规则,把对视图的插入等操作改写为对其他表的适当动作,来获得可更新视图的效果。更多信息见 CREATE RULE。
使用DROP VIEW语句删除视图。
创建一个由所有喜剧(Comedy)影片组成的视图:
CREATE VIEW kinds AS
SELECT *
FROM films
WHERE kind = 'Comedy';
SELECT * FROM kinds;
code | title | did | date_prod | kind | len
-------+---------------------------+-----+------------+--------+-------
UA502 | Bananas | 105 | 1971-07-13 | Comedy | 01:22
C_701 | There's a Girl in my Soup | 107 | 1970-06-11 | Comedy | 01:36
(2 rows)
SQL92 为 CREATE VIEW 语句规定了一些额外的能力:
CREATE VIEWview[column[, ...] ] AS SELECTexpression[ AScolname] [, ...] FROMtable[ WHEREcondition] [ WITH [ CASCADE | LOCAL ] CHECK OPTION ]
完整 SQL92 命令的可选子句有:
此选项与可更新视图有关。视图上的所有 INSERT 和 UPDATE 都会被检查,以确保数据满足定义视图的条件。如果不满足,更新将被拒绝。
在该视图上检查完整性。
在该视图以及任何依赖视图上检查完整性。如果既未指定 CASCADE 也未指定 LOCAL,则假定使用 CASCADE。
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。