ALTER VIEW — 更改视图的定义
ALTER VIEW [ IF EXISTS ]name
ALTER [ COLUMN ]column_name
SET DEFAULTexpression
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
TOnew_column_name
ALTER VIEW [ IF EXISTS ]name
RENAME TOnew_name
ALTER VIEW [ IF EXISTS ]name
SET SCHEMAnew_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
(枚举
)更改视图的检查选项。该值必须为 local
或 cascaded
。
security_barrier
(布尔型
)更改视图的安全屏障属性。该值必须为布尔值,例如 true
或 false
。
security_invoker
(布尔型
)更改视图的安全调用者属性。该值必须为布尔值,例如 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 will receive a NULL INSERT INTO a_view(id) VALUES(2); -- ts will receive the current time
ALTER VIEW
是 PostgreSQL 对 SQL 标准的扩展。
如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用 此表单 报告文档问题。