ALTER VIEW

更改一个视图的定义。

概要

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 特权。 这些限制迫使更改所有者不能执行删除和重新创建视图所无法做的任何事情。 但是,超级用户可以更改任何视图的所有权。

参数

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:Rename the view myview to 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 标准的 YMatrix 数据库扩展。

另见

CREATE VIEWDROP VIEW