↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3

ALTER VIEW

ALTER VIEW — 更改视图的定义

大纲

ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression
ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT
ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name
ALTER VIEW [ IF EXISTS ] name RENAME TO new_name
ALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema
ALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )
ALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )

描述

ALTER VIEW 更改视图的各种辅助属性。(如果要修改视图的定义查询,请使用 CREATE OR REPLACE VIEW。)

要使用 ALTER VIEW,必须拥有该视图。要更改视图的模式,还必须在新模式上拥有 CREATE 权限。要更改所有者,还必须是新所有者角色的直接或间接成员,并且该角色必须在视图所在模式上拥有 CREATE 权限。(这些限制确保更改所有者不会执行任何无法通过删除并重新创建视图完成的操作。不过,超级用户无论如何都可以更改任何视图的所有权。)

参数

name #

现有视图的名称(可以带模式限定)。

column_name #

现有列的名称。

new_column_name #

现有列的新名称。

IF EXISTS #

如果视图不存在,则不抛出错误,而是发出一条提示。

SET/DROP DEFAULT #

这些形式用于设置或移除列的默认值。对于任何以该视图为目标的 INSERT 或 UPDATE 命令,视图列的默认值都会在应用该视图上的任何规则或触发器之前被代入。因此,视图的默认值将优先于底层关系中的任何默认值。

new_owner #

视图新拥有者的用户名。

new_name #

该视图的新名称。

new_schema #

该视图的新模式。

SET ( view_option_name [= view_option_value] [, ... ] )
RESET ( view_option_name [, ... ] ) #

设置或重置视图选项。目前支持的选项有:

check_option (enum) #

更改视图的检查选项。该值必须为 local 或 cascaded。

security_barrier (boolean) #

更改视图的安全屏障属性。该值必须为布尔值,例如 true 或 false。

security_invoker (boolean) #

更改视图的安全调用者属性。该值必须为布尔值,例如 true 或 false。

注解

出于历史原因,视图也可以使用 ALTER TABLE;但允许用于视图的 ALTER TABLE 变体,仅限于与上面所示形式等价的那些。

示例

将视图 foo 重命名为 bar:

ALTER VIEW foo RENAME TO bar;

要为一个可更新视图附加默认列值:

CREATE TABLE base_table (id int, ts timestamptz);
CREATE VIEW a_view AS SELECT * FROM base_table;
ALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();
INSERT INTO base_table(id) VALUES(1);  -- ts 将得到 NULL
INSERT INTO a_view(id) VALUES(2);  -- ts 将得到当前时间

兼容性

ALTER VIEW 是 PostgreSQL 对 SQL 标准的扩展。

报告文档问题

阅读 上游文档. 通过 PostgreSQL 文档反馈表单.