ALTER VIEW
ALTER VIEW¶
更改一个视图的定义。
- 语法
-
``` sql 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
。)要执行此命令,您必须是视图的所有者。 要更改视图的架构,还必须对新架构具有
CREATE
权限。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须在视图的架构上具有
CREATE
权限。 这些限制迫使更改所有者不能执行删除和重新创建视图所无法做的任何事情。 但是,超级用户可以更改任何视图的所有权。 - 参数
-
该SQL命令参数说明见下
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
(string)- 更改视图的检查选项。 该值必须是
local
或cascaded
。 security_barrier
(boolean)- 更改视图的安全屏障属性。 该值必须是布尔值,例如
true
或false
。
- 注意
-
由于历史原因,
ALTER TABLE
也可以与视图一起使用; 但是,视图允许的ALTER TABLE
的唯一变体与上面显示的语句等效。将视图
myview
重命名为newview
:ALTER VIEW myview RENAME TO newview;
- 示例
-
要将视图
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 will receive a NULL INSERT INTO a_view(id) VALUES(2); -- ts will receive the current time
- 兼容性说明
ALTER VIEW
是SQL标准的SeaboxMPP数据库扩展。- 相关SQL命令
CREATE VIEW
,DROP VIEW