ALTER VIEW — 更改视图的定义
ALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameSET DEFAULTexpressionALTER VIEW [ IF EXISTS ]nameALTER [ COLUMN ]column_nameDROP DEFAULT ALTER VIEW [ IF EXISTS ]nameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER VIEW [ IF EXISTS ]nameRENAME [ COLUMN ]column_nameTOnew_column_nameALTER VIEW [ IF EXISTS ]nameRENAME TOnew_nameALTER VIEW [ IF EXISTS ]nameSET SCHEMAnew_schemaALTER VIEW [ IF EXISTS ]nameSET (view_option_name[=view_option_value] [, ... ] ) ALTER VIEW [ IF EXISTS ]nameRESET (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 will receive a NULL INSERT INTO a_view(id) VALUES(2); -- ts will receive the current time
ALTER VIEW 是 PostgreSQL 对 SQL 标准的扩展。
如果您在文档中发现任何不正确、与您使用特定功能的经验不符或需要进一步澄清的内容,请使用此表单报告文档问题。