Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
用修改的版本替换视图定义。
ALTER VIEW [ owner.]view-name [ ( column-name, ... ) ] AS select-statement [ WITH CHECK OPTION ]
ALTER VIEW [ owner.]view-name { SET HIDDEN | RECOMPILE | DISABLE | ENABLE }
AS 子句 此子句的用途和语法与 CREATE VIEW 语句相同。请参见CREATE VIEW 语句。
WITH CHECK OPTION 子句 此子句的用途和语法与 CREATE VIEW 语句相同。请参见CREATE VIEW 语句。
SET HIDDEN 子句 SET HIDDEN 子句用于将视图的定义进行模糊处理,并使该视图隐藏(例如,在 Sybase Central 中)。对视图的显式引用仍有效。
SET HIDDEN 操作是不可逆的。
RECOMPILE 子句 RECOMPILE 子句用于为视图重新创建列定义。此子句在功能上与 ENABLE 子句相同,只不过可在未被禁用的视图上使用此子句。重新编译某个视图时,数据库服务器会根据在新视图定义中指定的列名称恢复列权限。如果某个列在重新编译后不再存在,则现有权限将会丢失。
DISABLE 子句 DISABLE 子句用于禁止数据库服务器使用视图。
ENABLE 子句 ENABLE 子句用于启用已禁用的视图。启用视图会使数据库服务器为视图重新创建列定义。启用视图之前,必须启用它所依赖的任何视图。
如果变更另一用户拥有的视图,必须通过包含该所有者来限定名称(例如,GROUPO.ViewSalesOrders)。如果不限定名称,数据库服务器就会查找您拥有的该名称的视图,并对其进行变更。如果没有这样的视图,服务器将返回错误。
变更视图时,系统会保留视图的现有权限,不必重新指派。还可以分别使用 DROP VIEW 和 CREATE VIEW 语句代替 ALTER VIEW 语句,删除并重新创建视图。不过如果这样做,需要重新指派针对视图的权限。
使用语法 1 完成视图变更之后,数据库服务器会重新编译视图。根据所做更改的类型,如果存在相关视图,数据库服务器还将尝试重新编译这些视图。如果已进行了影响相关视图的更改,可能还需要变更相关视图的定义。有关视图变更及其如何影响视图依赖性的详细信息,请参见视图依赖性。
如果定义视图的 SELECT 语句包含一个星号 (*),则视图中的列数会随着基础表中列的增加或删除而变化。视图中列的名称和数据类型也会发生更改。
语法 1 此语法用于变更视图的结构。变更视图结构与变更表不同(变更表时,仅限于对个别列进行更改),它要求用新定义替换整个视图定义,与创建视图很相似。有关用于定义视图结构的参数的说明,请参见CREATE VIEW 语句。
语法 2 此语法用于更改视图的属性,例如是否隐藏视图定义。
使用 SET HIDDEN 时,视图可被卸载并重装到其它数据库中。如果使用 SET HIDDEN,则使用调试程序进行调试将不会显示视图定义,也无法通过过程分析获得视图定义。如果需要更改隐藏视图的定义,则必须删除该视图并使用 CREATE VIEW 语句重新创建。
使用 DISABLE 子句时,数据库服务器便无法再使用此视图来回应查询。禁用视图与删除视图类似,只是视图定义仍保留在数据库中。禁用视图还会禁用任何相关视图。因此,DISABLE 子句不仅要求对被禁用的视图具有独占访问权限,还要求对相关视图具有独占访问权限,因为这些相关视图也会被禁用。
必须是视图的所有者或者有 DBA 权限。
自动提交。
所有的过程和触发器都从内存中卸载,这样,引用视图的任何过程或触器都反映新的视图定义。如果定期变更视图,则卸载和装载过程和触发器会影响性能。
SQL/2008 服务商扩充。