Postgresql 中文操作指南

ALTER VIEW

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

    • 这些窗体对列设置或移除默认值。视图列的默认值将替换到任何 INSERTUPDATE 命令中,该命令的目标是该视图,然后再应用任何规则或触发器。因此,视图的默认值将优先于任何来自基础关系的默认值。

  • new_owner

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

  • new_name

    • 视图的新名称。

  • new_schema

    • 视图的新模式。

  • SET ( _view_option_name [= view_option_value ] [, …​ ] ) RESET ( _view_option_name_ [, …​ ] )_

    • 设置或重置视图选项。当前支持的选项:

  • check_option (enum)

    • 更改视图的检查选项。值必须为 localcascaded

  • security_barrier (boolean)

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

  • security_invoker (boolean)

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

Notes

出于历史原因, ALTER TABLE 也可用于视图;但是,只允许在视图中使用等同于上面显示的 ALTER TABLE 的变体。

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

Compatibility

ALTER VIEW 是 SQL 标准的 Postgresql 扩展。

See Also