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
- 更改视图所有者。
重要
新的视图所有者还应对视图引用的对象具有 SELECT 权限;否则该用户将无法访问视图。 -
{ INCLUDE | EXCLUDE | MATERIALIZE } [SCHEMA] PRIVILEGES
- 指定此视图的架构权限的默认继承:
-
EXCLUDE [SCHEMA] PRIVILEGES
(默认)禁止从架构继承权限。 -
INCLUDE [SCHEMA] PRIVILEGES
将授予视图架构的相同权限授予视图。 -
MATERIALIZE
:将授权复制到视图并在视图上创建一个 GRANT 对象。这将禁用视图上继承的权限标志,让您可以:-
在视图级别授予更具体的权限
-
使用架构级权限作为模板
-
将视图移动到不同的架构
-
更改架构权限而不影响视图
注意
如果在数据库级别禁用继承的权限,架构权限仍然可以实体化。 -
另请参阅 设置表和视图的权限继承。
-
RENAME TO
- 重命名一个或多个视图:
RENAME TO new‑view‑name[,...]
需要满足以下要求:
-
新的视图名称 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
如果指定多个要重命名的视图,源列表和目标列表必须具有相同数量的名称。
-
重命名一个视图需要对包含该视图的架构具有
USAGE
和CREATE
权限。
-
特权
非超级用户:对架构的 USAGE 权限,为以下之一:
-
视图所有者
-
对视图的 ALTER 权限
对于某些操作,非超级用户必须具备以下架构权限:
示例
将视图 view1
重命名为 view2
:
=> CREATE VIEW view1 AS SELECT * FROM t;
CREATE VIEW
=> ALTER VIEW view1 RENAME TO view2;
ALTER VIEW