ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# ALTER VIEW ## Name ALTER VIEW -- 更改视图定义 ## Synopsis ``` 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` 这种形式设置或删除一个列的缺省值。 当`INSERT` 和`UPDATE`命令的对象是视图时,使用这个选项时可以在视图相关的规则和触发器启动前,设置视图列的缺省值。 视图列的缺省值也会优先于视图相关联表的列缺省值生效。 `_new_owner_` 视图新所有者的用户名称。 `_new_name_` 视图的新名称。 `_new_schema_` 视图的新模式。 `_view_option_name_` 将要设置或复位的选项名称。 `_view_option_value_` 视图选项的新值。 ## 注意 由于历史原因,`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 现在是空值 INSERT INTO a_view(id) VALUES(2); -- ts 现在是当前时间 ``` ## 兼容性 `ALTER VIEW`是PostgreSQL对SQL标准的扩展。 ## 参见 [CREATE VIEW](#calibre_link-473), [DROP VIEW](#calibre_link-481)