ALTER VIEW
更改视图的定义
英文手册覆盖始于 PostgreSQL 6.4. 来源历史与运行验证各自保留独立版本边界。
当前阅读 PG 18·选择有来源记录的版本
- anchor
- SQL-ALTERVIEW
- file
- sql-alterview.html
- lang
- en
- name
- ALTER VIEW
- purpose
- change the definition of a view
- purpose zh
- 未知
- sections same as
- 未知
- slug
- 18
语法
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 [, ... ] )语法图
从左向右阅读;分支表示选择,旁路表示可选,循环表示重复。点击带下划线的参数可打开对应规则。
ALTER VIEW · 语法 2
ALTER VIEW · 语法 3
ALTER VIEW · 语法 4
ALTER VIEW · 语法 5
ALTER VIEW · 语法 6
ALTER VIEW · 语法 7
ALTER VIEW · 语法 8
版本定义 PG 18
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 [, ... ] )描述
ALTER VIEW更改视图的各种辅助属性。(如果要修改视图的定义查询,请使用 CREATE OR REPLACE VIEW。)
要使用 ALTER VIEW,你必须是该视图的拥有者。要更改视图的模式,你还必须拥有新模式上的 CREATE 权限。要更改拥有者,你必须能够对新的拥有角色执行 SET ROLE,并且该角色必须拥有该视图所在模式上的 CREATE 权限。(这些限制确保,更改拥有者不会做出任何你不能通过删除并重新创建该视图来完成的事情。不过,超级用户无论如何都可以更改任何视图的所有权。)
参数
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。
注解
出于历史原因,视图也可以使用 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 将得到 NULL INSERT INTO a_view(id) VALUES(2); -- ts 将得到当前时间
兼容性
ALTER VIEW 是 PostgreSQL 对 SQL 标准的扩展。
另见
CREATE VIEW, DROP VIEW比较版本
完整来源事实
synopsis html
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> ALTER [ COLUMN ] <em class="replaceable"><code>column_name</code></em> SET DEFAULT <em class="replaceable"><code>expression</code></em>
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> ALTER [ COLUMN ] <em class="replaceable"><code>column_name</code></em> DROP DEFAULT
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> OWNER TO { <em class="replaceable"><code>new_owner</code></em> | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> RENAME [ COLUMN ] <em class="replaceable"><code>column_name</code></em> TO <em class="replaceable"><code>new_column_name</code></em>
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> RENAME TO <em class="replaceable"><code>new_name</code></em>
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> SET SCHEMA <em class="replaceable"><code>new_schema</code></em>
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> SET ( <em class="replaceable"><code>view_option_name</code></em> [= <em class="replaceable"><code>view_option_value</code></em>] [, ... ] )
ALTER VIEW [ IF EXISTS ] <em class="replaceable"><code>name</code></em> RESET ( <em class="replaceable"><code>view_option_name</code></em> [, ... ] )synopsis text
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 [, ... ] )来源引用
定义来源
center · PostgreSQL 18 · a709ab85
正文语言: zh-Hans · 1b5ca64c