{"Entry":{"collection":"sql","key":"alter-view","name":"ALTER VIEW","aliases":["alterview"],"metadata":{"aliases":["alterview"],"changed_in":["8.4","9.2","9.5","13","14"],"changes":[{"from":"8.2","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"added","synopsis":null,"to":"8.3"},{"from":"8.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description","parameters","notes"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression","ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT","ALTER VIEW name OWNER TO new_owner","ALTER VIEW name RENAME TO new_name","ALTER VIEW name SET SCHEMA new_schema"],"removed":["ALTER VIEW name RENAME TO newname"]},"to":"8.4"},{"from":"9.1","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["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 [, ... ] )"],"removed":["ALTER VIEW name ALTER [ COLUMN ] column SET DEFAULT expression","ALTER VIEW name ALTER [ COLUMN ] column DROP DEFAULT"]},"to":"9.2"},{"from":"9.2","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters","examples"],"removed":[]},"status":"changed","synopsis":null,"to":"9.3"},{"from":"9.3","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"9.4"},{"from":"9.4","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"9.5"},{"from":"12","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":{"added":["ALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name"],"removed":[]},"to":"13"},{"from":"13","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":[],"removed":[]},"status":"changed","synopsis":{"added":["ALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }"],"removed":[]},"to":"14"},{"from":"14","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["parameters"],"removed":[]},"status":"changed","synopsis":null,"to":"15"},{"from":"15","purpose_changed":false,"renamed":null,"sections":{"added":[],"changed":["description"],"removed":[]},"status":"changed","synopsis":null,"to":"16"}],"content_hash":"9fe40e9a71731d96345d207fcdbed3af37e3f7f8e3cc9ba0ebec00d5de98ed6a","editorial":{},"first_version":"8.3","group":"table","imported_at":"2026-09-30T17:43:36.794591+08:00","last_version":"20","name":"ALTER VIEW","object":"VIEW","position":13,"present_in":["8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"purpose":"change the definition of a view","purpose_zh":"","related":["create-view","drop-view"],"slug":"alter-view","source_rev":"a709ab85","synopsis":"ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression\nALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT\nALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name\nALTER VIEW [ IF EXISTS ] name RENAME TO new_name\nALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema\nALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )\nALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )","verb":"ALTER"}},"Definition":{"Collection":"sql","Key":"alter-view","SourceDatabase":"center","Version":"18","SourceTable":"sqlcmd","SourceKey":"alter-view","SourceRevision":"a709ab85","Facts":{"anchor":"SQL-ALTERVIEW","file":"sql-alterview.html","lang":"en","name":"ALTER VIEW","purpose":"change the definition of a view","purpose_zh":"","related":["create-view","drop-view"],"sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e changes various auxiliary properties of a view. (If you want to modify the view's defining query, use \u003ccode class=\"command\"\u003eCREATE OR REPLACE VIEW\u003c/code\u003e.)\u003c/p\u003e\u003cp\u003eYou must own the view to use \u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e. To change a view's schema, you must also have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the new schema. To alter the owner, you must be able to \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e to the new owning role, and that role must have \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e privilege on the view's schema. (These restrictions enforce that altering the owner doesn't do anything you couldn't do by dropping and recreating the view. However, a superuser can alter ownership of any view anyway.)\u003c/p\u003e","key":"description","title":"Description"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe name (optionally schema-qualified) of an existing view.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eName of an existing column.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_column_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eNew name for an existing column.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eDo not throw an error if the view does not exist. A notice is issued in this case.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET\u003c/code\u003e/\u003ccode class=\"literal\"\u003eDROP DEFAULT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThese forms set or remove the default value for a column. A view column's default value is substituted into any \u003ccode class=\"command\"\u003eINSERT\u003c/code\u003e or \u003ccode class=\"command\"\u003eUPDATE\u003c/code\u003e command whose target is the view, before applying any rules or triggers for the view. The view's default will therefore take precedence over any default values from underlying relations.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe user name of the new owner of the view.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new name for the view.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eThe new schema for the view.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [= \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_value\u003c/code\u003e\u003c/em\u003e] [, ... ] )\u003c/code\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eRESET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [, ... ] )\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eSets or resets a view option. Currently supported options are:\u003c/p\u003e\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003echeck_option\u003c/code\u003e (\u003ccode class=\"type\"\u003eenum\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eChanges the check option of the view. The value must be \u003ccode class=\"literal\"\u003elocal\u003c/code\u003e or \u003ccode class=\"literal\"\u003ecascaded\u003c/code\u003e.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003esecurity_barrier\u003c/code\u003e (\u003ccode class=\"type\"\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eChanges the security-barrier property of the view. The value must be a Boolean value, such as \u003ccode class=\"literal\"\u003etrue\u003c/code\u003e or \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e.\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003esecurity_invoker\u003c/code\u003e (\u003ccode class=\"type\"\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003eChanges the security-invoker property of the view. The value must be a Boolean value, such as \u003ccode class=\"literal\"\u003etrue\u003c/code\u003e or \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e.\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"Parameters"},{"html":"\u003cp\u003eFor historical reasons, \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e can be used with views too; but the only variants of \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e that are allowed with views are equivalent to the ones shown above.\u003c/p\u003e","key":"notes","title":"Notes"},{"html":"\u003cp\u003eTo rename the view \u003ccode class=\"literal\"\u003efoo\u003c/code\u003e to \u003ccode class=\"literal\"\u003ebar\u003c/code\u003e:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER VIEW foo RENAME TO bar;\n\u003c/pre\u003e\u003cp\u003eTo attach a default column value to an updatable view:\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eCREATE TABLE base_table (id int, ts timestamptz);\nCREATE VIEW a_view AS SELECT * FROM base_table;\nALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();\nINSERT INTO base_table(id) VALUES(1);  -- ts will receive a NULL\nINSERT INTO a_view(id) VALUES(2);  -- ts will receive the current time\n\u003c/pre\u003e","key":"examples","title":"Examples"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e is a \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e extension of the SQL standard.\u003c/p\u003e","key":"compatibility","title":"Compatibility"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-view/?v=18\" title=\"CREATE VIEW\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE VIEW\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-view/?v=18\" title=\"DROP VIEW\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP VIEW\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"See Also"}],"sections_same_as":"","slug":"18","synopsis_html":"ALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ALTER [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e SET DEFAULT \u003cem class=\"replaceable\"\u003e\u003ccode\u003eexpression\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ALTER [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e DROP DEFAULT\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_column_name\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [= \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_value\u003c/code\u003e\u003c/em\u003e] [, ... ] )\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RESET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [, ... ] )","synopsis_text":"ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression\nALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT\nALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name\nALTER VIEW [ IF EXISTS ] name RENAME TO new_name\nALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema\nALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )\nALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )"},"ManualEvidence":{},"MeasuredEvidence":{}},"Text":{"Collection":"sql","Key":"alter-view","SourceDatabase":"pgweb","Version":"18","Locale":"zh-Hans","Title":"ALTER VIEW","Summary":"更改视图的定义","BodyHTML":"\u003cpre\u003eALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression\nALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT\nALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name\nALTER VIEW [ IF EXISTS ] name RENAME TO new_name\nALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema\nALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )\nALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )\u003c/pre\u003e\u003csection\u003e\u003ch2\u003e描述\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER VIEW\u003c/code\u003e更改视图的各种辅助属性。（如果要修改视图的定义查询，请使用 \u003ccode\u003eCREATE OR REPLACE VIEW\u003c/code\u003e。）\u003c/p\u003e\u003cp\u003e要使用 \u003ccode\u003eALTER VIEW\u003c/code\u003e，你必须是该视图的拥有者。要更改视图的模式，你还必须拥有新模式上的 \u003ccode\u003eCREATE\u003c/code\u003e 权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode\u003eSET ROLE\u003c/code\u003e，并且该角色必须拥有该视图所在模式上的 \u003ccode\u003eCREATE\u003c/code\u003e 权限。（这些限制确保，更改拥有者不会做出任何你不能通过删除并重新创建该视图来完成的事情。不过，超级用户无论如何都可以更改任何视图的所有权。）\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e参数\u003c/h2\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有视图的名称（可以带模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有列的名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_column_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有列的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果视图不存在，则不抛出错误，而是发出一条提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eSET\u003c/code\u003e/\u003ccode\u003eDROP DEFAULT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e这些形式用于设置或移除列的默认值。对于任何以该视图为目标的 \u003ccode\u003eINSERT\u003c/code\u003e 或 \u003ccode\u003eUPDATE\u003c/code\u003e 命令，视图列的默认值都会在应用该视图上的任何规则或触发器之前被代入。因此，视图的默认值将优先于底层关系中的任何默认值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e视图新拥有者的用户名。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该视图的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003cem\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该视图的新模式。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003eSET ( \u003cem\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [= \u003cem\u003e\u003ccode\u003eview_option_value\u003c/code\u003e\u003c/em\u003e] [, ... ] )\u003c/code\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan\u003e\u003ccode\u003eRESET ( \u003cem\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [, ... ] )\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e设置或重置视图选项。目前支持的选项有：\u003c/p\u003e\u003cdiv\u003e\u003cdl\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003echeck_option\u003c/code\u003e (\u003ccode\u003eenum\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的检查选项。该值必须为 \u003ccode\u003elocal\u003c/code\u003e 或 \u003ccode\u003ecascaded\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003esecurity_barrier\u003c/code\u003e (\u003ccode\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的安全屏障属性。该值必须为布尔值，例如 \u003ccode\u003etrue\u003c/code\u003e 或 \u003ccode\u003efalse\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan\u003e\u003ccode\u003esecurity_invoker\u003c/code\u003e (\u003ccode\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的安全调用者属性。该值必须为布尔值，例如 \u003ccode\u003etrue\u003c/code\u003e 或 \u003ccode\u003efalse\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e注解\u003c/h2\u003e\u003cp\u003e出于历史原因，视图也可以使用 \u003ccode\u003eALTER TABLE\u003c/code\u003e；但允许用于视图的 \u003ccode\u003eALTER TABLE\u003c/code\u003e 变体，仅限于与上面所示形式等价的那些。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e示例\u003c/h2\u003e\u003cp\u003e将视图 \u003ccode\u003efoo\u003c/code\u003e 重命名为 \u003ccode\u003ebar\u003c/code\u003e：\u003c/p\u003e\u003cpre\u003eALTER VIEW foo RENAME TO bar;\n\u003c/pre\u003e\u003cp\u003e要为一个可更新视图附加默认列值：\u003c/p\u003e\u003cpre\u003eCREATE TABLE base_table (id int, ts timestamptz);\nCREATE VIEW a_view AS SELECT * FROM base_table;\nALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();\nINSERT INTO base_table(id) VALUES(1);  -- ts 将得到 NULL\nINSERT INTO a_view(id) VALUES(2);  -- ts 将得到当前时间\n\u003c/pre\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e兼容性\u003c/h2\u003e\u003cp\u003e\u003ccode\u003eALTER VIEW\u003c/code\u003e 是 \u003cspan\u003ePostgreSQL\u003c/span\u003e 对 SQL 标准的扩展。\u003c/p\u003e\u003c/section\u003e\u003csection\u003e\u003ch2\u003e另见\u003c/h2\u003e\u003cspan\u003e\u003ca href=\"/wiki/sql/create-view/?v=18\" title=\"CREATE VIEW\" rel=\"nofollow\"\u003e\u003cspan\u003eCREATE VIEW\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-view/?v=18\" title=\"DROP VIEW\" rel=\"nofollow\"\u003e\u003cspan\u003eDROP VIEW\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e\u003c/section\u003e","SourceRevision":"1b5ca64c","ContentHash":"d0a476776afbded07f62dff1a7828c850f31cff8d643dcfefe69a0fdc29bf67a","Payload":{"purpose_zh":"更改视图的定义","sections":[{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e更改视图的各种辅助属性。（如果要修改视图的定义查询，请使用 \u003ccode class=\"command\"\u003eCREATE OR REPLACE VIEW\u003c/code\u003e。）\u003c/p\u003e\u003cp\u003e要使用 \u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e，你必须是该视图的拥有者。要更改视图的模式，你还必须拥有新模式上的 \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e 权限。要更改拥有者，你必须能够对新的拥有角色执行 \u003ccode class=\"literal\"\u003eSET ROLE\u003c/code\u003e，并且该角色必须拥有该视图所在模式上的 \u003ccode class=\"literal\"\u003eCREATE\u003c/code\u003e 权限。（这些限制确保，更改拥有者不会做出任何你不能通过删除并重新创建该视图来完成的事情。不过，超级用户无论如何都可以更改任何视图的所有权。）\u003c/p\u003e","key":"description","title":"描述"},{"html":"\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有视图的名称（可以带模式限定）。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有列的名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_column_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e现有列的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eIF EXISTS\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e如果视图不存在，则不抛出错误，而是发出一条提示。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET\u003c/code\u003e/\u003ccode class=\"literal\"\u003eDROP DEFAULT\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e这些形式用于设置或移除列的默认值。对于任何以该视图为目标的 \u003ccode class=\"command\"\u003eINSERT\u003c/code\u003e 或 \u003ccode class=\"command\"\u003eUPDATE\u003c/code\u003e 命令，视图列的默认值都会在应用该视图上的任何规则或触发器之前被代入。因此，视图的默认值将优先于底层关系中的任何默认值。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e视图新拥有者的用户名。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该视图的新名称。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e该视图的新模式。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eSET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [= \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_value\u003c/code\u003e\u003c/em\u003e] [, ... ] )\u003c/code\u003e\u003cbr\u003e\u003c/span\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003eRESET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [, ... ] )\u003c/code\u003e\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e设置或重置视图选项。目前支持的选项有：\u003c/p\u003e\u003cdiv class=\"variablelist\"\u003e\u003cdl class=\"variablelist\"\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003echeck_option\u003c/code\u003e (\u003ccode class=\"type\"\u003eenum\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的检查选项。该值必须为 \u003ccode class=\"literal\"\u003elocal\u003c/code\u003e 或 \u003ccode class=\"literal\"\u003ecascaded\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003esecurity_barrier\u003c/code\u003e (\u003ccode class=\"type\"\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的安全屏障属性。该值必须为布尔值，例如 \u003ccode class=\"literal\"\u003etrue\u003c/code\u003e 或 \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003cdt\u003e\u003cspan class=\"term\"\u003e\u003ccode class=\"literal\"\u003esecurity_invoker\u003c/code\u003e (\u003ccode class=\"type\"\u003eboolean\u003c/code\u003e)\u003c/span\u003e\u003c/dt\u003e\u003cdd\u003e\u003cp\u003e更改视图的安全调用者属性。该值必须为布尔值，例如 \u003ccode class=\"literal\"\u003etrue\u003c/code\u003e 或 \u003ccode class=\"literal\"\u003efalse\u003c/code\u003e。\u003c/p\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e\u003c/dd\u003e\u003c/dl\u003e\u003c/div\u003e","key":"parameters","title":"参数"},{"html":"\u003cp\u003e出于历史原因，视图也可以使用 \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e；但允许用于视图的 \u003ccode class=\"command\"\u003eALTER TABLE\u003c/code\u003e 变体，仅限于与上面所示形式等价的那些。\u003c/p\u003e","key":"notes","title":"注解"},{"html":"\u003cp\u003e将视图 \u003ccode class=\"literal\"\u003efoo\u003c/code\u003e 重命名为 \u003ccode class=\"literal\"\u003ebar\u003c/code\u003e：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eALTER VIEW foo RENAME TO bar;\n\u003c/pre\u003e\u003cp\u003e要为一个可更新视图附加默认列值：\u003c/p\u003e\u003cpre class=\"programlisting\"\u003eCREATE TABLE base_table (id int, ts timestamptz);\nCREATE VIEW a_view AS SELECT * FROM base_table;\nALTER VIEW a_view ALTER COLUMN ts SET DEFAULT now();\nINSERT INTO base_table(id) VALUES(1);  -- ts 将得到 NULL\nINSERT INTO a_view(id) VALUES(2);  -- ts 将得到当前时间\n\u003c/pre\u003e","key":"examples","title":"示例"},{"html":"\u003cp\u003e\u003ccode class=\"command\"\u003eALTER VIEW\u003c/code\u003e 是 \u003cspan class=\"productname\"\u003ePostgreSQL\u003c/span\u003e 对 SQL 标准的扩展。\u003c/p\u003e","key":"compatibility","title":"兼容性"},{"html":"\u003cspan class=\"simplelist\"\u003e\u003ca href=\"/wiki/sql/create-view/?v=18\" title=\"CREATE VIEW\"\u003e\u003cspan class=\"refentrytitle\"\u003eCREATE VIEW\u003c/span\u003e\u003c/a\u003e, \u003ca href=\"/wiki/sql/drop-view/?v=18\" title=\"DROP VIEW\"\u003e\u003cspan class=\"refentrytitle\"\u003eDROP VIEW\u003c/span\u003e\u003c/a\u003e\u003c/span\u003e","key":"see_also","title":"另见"}],"sections_same_as":"","synopsis_html":"ALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ALTER [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e SET DEFAULT \u003cem class=\"replaceable\"\u003e\u003ccode\u003eexpression\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e ALTER [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e DROP DEFAULT\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e OWNER TO { \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_owner\u003c/code\u003e\u003c/em\u003e | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME [ COLUMN ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ecolumn_name\u003c/code\u003e\u003c/em\u003e TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_column_name\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RENAME TO \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_name\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET SCHEMA \u003cem class=\"replaceable\"\u003e\u003ccode\u003enew_schema\u003c/code\u003e\u003c/em\u003e\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e SET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [= \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_value\u003c/code\u003e\u003c/em\u003e] [, ... ] )\nALTER VIEW [ IF EXISTS ] \u003cem class=\"replaceable\"\u003e\u003ccode\u003ename\u003c/code\u003e\u003c/em\u003e RESET ( \u003cem class=\"replaceable\"\u003e\u003ccode\u003eview_option_name\u003c/code\u003e\u003c/em\u003e [, ... ] )","synopsis_text":"ALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name SET DEFAULT expression\nALTER VIEW [ IF EXISTS ] name ALTER [ COLUMN ] column_name DROP DEFAULT\nALTER VIEW [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }\nALTER VIEW [ IF EXISTS ] name RENAME [ COLUMN ] column_name TO new_column_name\nALTER VIEW [ IF EXISTS ] name RENAME TO new_name\nALTER VIEW [ IF EXISTS ] name SET SCHEMA new_schema\nALTER VIEW [ IF EXISTS ] name SET ( view_option_name [= view_option_value] [, ... ] )\nALTER VIEW [ IF EXISTS ] name RESET ( view_option_name [, ... ] )"}},"RequestedLocale":"zh-Hans","Fallback":false,"Versions":["10","11","12","13","14","15","16","17","18","19","20","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en","zh-Hans"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
