9.3 9.4 9.5 9.6 10 11 12 13
阿里云PostgreSQL 问题报告 纠错本页面

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
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

一个已有视图的名称(可以有模式修饰) 。

IF EXISTS

使用这个选项,如果视图不存在时不会产生错误,仅有会有一个通知。

SET/DROP DEFAULT

这种形式设置或删除一个列的缺省值。 当INSERTUPDATE命令的对象是视图时,使用这个选项时可以在视图相关的规则和触发器启动前,设置视图列的缺省值。 视图列的缺省值也会优先于视图相关联表的列缺省值生效。

new_owner

视图新所有者的用户名称。

new_name

视图的新名称。

new_schema

视图的新模式。

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

设置或重置一个视图选项。当前支持的选项有:

check_option (string)

修改该视图的检查选项。值必须是localcascaded

security_barrier (boolean)

修改该视图的安全隔离性能。值必须是布尔值,比如truefalse

注意

由于历史原因,ALTER TABLE也可用于视图; 但是ALTER TABLE命令中允许与视图相关的选项与上面所列选项相同。

例子

重命名视图foobar:

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 现在是空值
INSERT INTO a_view(id) VALUES(2);  -- ts 现在是当前时间

兼容性

ALTER VIEWPostgreSQL对SQL标准的扩展。

参见

CREATE VIEW, DROP VIEW
<
/BODY >