PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# ALTER VIEW

## 名称

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`。）

你必须是视图的所有者才可以使用`ALTER 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`命令中允许与视图相关的选项与上面所列选项相同。

## 例子

重命名视图`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 现在是空值
    INSERT INTO a_view(id) VALUES(2);  -- ts 现在是当前时间

## 兼容性

`ALTER VIEW`是PostgreSQL对SQL标准的扩展。

## 参见

CREATE VIEW, DROP VIEW

上一页 | 起始页 | 下一页
ALTER USER MAPPING | 上一级 | ANALYZE