ALTER VIEW

修改现有 视图的元数据。更改将自动提交。

语法

一般用途:

ALTER VIEW [[database.]schema.]view {
    | OWNER TO owner
    | SET SCHEMA schema
    | { INCLUDE | EXCLUDE | MATERIALIZE } [ SCHEMA ] PRIVILEGES
}

重命名视图:

ALTER VIEW [[database.]schema.]view[,...] RENAME TO new-view-name[,...]

参数

[database.]schema

数据库和架构。默认架构为 public。如果指定一个数据库,它必须是当前数据库。

视图
要更改的视图。
SET SCHEMA schema
将视图从一个架构移动到另一个架构。
OWNER TO owner
更改视图所有者。
{ INCLUDE | EXCLUDE | MATERIALIZE } [SCHEMA] PRIVILEGES
指定此视图的架构权限的默认继承:
  • EXCLUDE [SCHEMA] PRIVILEGES (默认)禁止从架构继承权限。

  • INCLUDE [SCHEMA] PRIVILEGES 将授予视图架构的相同权限授予视图。

  • MATERIALIZE:将授权复制到视图并在视图上创建一个 GRANT 对象。这将禁用视图上继承的权限标志,让您可以:

    • 在视图级别授予更具体的权限

    • 使用架构级权限作为模板

    • 将视图移动到不同的架构

    • 更改架构权限而不影响视图

另请参阅 设置表和视图的权限继承

RENAME TO
重命名一个或多个视图:
RENAME TO new‑view‑name[,...]

需要满足以下要求:

  • 新的视图名称 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。

  • 如果指定多个要重命名的视图,源列表和目标列表必须具有相同数量的名称。

  • 重命名一个视图需要对包含该视图的架构具有 USAGECREATE 权限。

特权

非超级用户:对架构的 USAGE 权限,为以下之一:

  • 视图所有者

  • 对视图的 ALTER 权限

对于某些操作,非超级用户必须具备以下架构权限:

示例

将视图 view1 重命名为 view2

=> CREATE VIEW view1 AS SELECT * FROM t;
CREATE VIEW
=> ALTER VIEW view1 RENAME TO view2;
ALTER VIEW