Postgresql 中文操作指南
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 | 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 [, ... ] )
Description
ALTER VIEW 更改视图的各种辅助属性。(如果您要更改视图的定义查询,请使用 CREATE OR REPLACE VIEW 。)
您必须拥有该视图才能使用 ALTER VIEW 。要更改视图的架构,您还必须具有新架构上的 CREATE 权限。要更改所有者,您必须能够为新所有角色 SET ROLE ,并且该角色必须在其架构上拥有 CREATE 权限。(这些限制强制更改所有者不会执行您无法通过删除和重新创建视图而做的事情。但是,超级用户始终可以更改任何视图的所有权。)
Parameters
-
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 。
-
Examples
要将视图 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