Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (A-D)

 

ALTER VIEW 语句

此语句用于用修改的版本替换视图定义。

语法 1
ALTER VIEW
[ owner.]view-name [ ( column-name, ... ) ] AS select-statement
[ WITH CHECK OPTION ]
语法 2
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/2003   服务商扩充。