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_USER | SESSION_USER }
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特权。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须在视图的架构上具有CREATE特权。 (这些限制规定,更改所有者不会通过删除并重新创建视图来执行您无法做的任何事情.但是,超级用户仍然可以更改任何视图的所有权.)

Parameters

  • 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

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

CREATE VIEW, DROP VIEW