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 MATERIALIZED VIEW 语句

此语句用于变更实例化视图。

语法
ALTER MATERIALIZED VIEW [ owner.]materialized-view-name { 
 SET HIDDEN
| { ENABLE | DISABLE }
| { ENABLE | DISABLE } USE IN OPTIMIZATION 
| { ADD PCTFREE percent-free-space | DROP PCTFREE }
| [ NOT ] ENCRYPTED
[ { IMMEDIATE | MANUAL } REFRESH ]
}
percent-free-space : integer
参数
  • SET HIDDEN 子句   SET HIDDEN 子句用于对实例化视图的定义进行模糊处理。此设置是不可逆的。有关详细信息,请参见隐藏实例化视图

  • ENABLE 子句   ENABLE 子句用于启用已被禁用的实例化视图,使之可供数据库服务器使用。此子句对于已启用的视图无效。使用此子句后,必须刷新以便对视图进行初始化,然后重新创建视图禁用时被删除的所有文本索引。

  • DISABLE 子句   DISABLE 子句用于禁止数据库服务器使用视图。禁用实例化视图时,数据库服务器会删除视图的数据及索引。

  • { ENABLE | DISABLE } USE IN OPTIMIZATION 子句   此子句用于指定是否希望实例化视图可供优化程序使用。如果指定 DISABLE USE IN OPTIMIZATION,则只能在执行显式引用视图的查询时使用实例化视图。缺省使用 ENABLE USE IN OPTIMIZATION。请参见允许和禁止优化程序使用实例化视图

  • ADD PCTFREE 子句   指定希望在每页上保留的可用空间的百分比。如果数据更新时行大小增加,将占用可用空间。如果某页上没有可用空间,则每次增加该页上的行大小时,都需要将该行拆分到多个页中,从而导致产生行碎片并可能引起性能下降。

    percent-free-space 的值是一个介于 0 和 100 之间的整数。值为 0 表示每个页面上均没有可用空间—每个页面均完全填满。如果值很高,会使每行单独插入到页中。如果未设置 PCTFREE,或将其删除,则会根据数据库页面大小应用缺省 PCTFREE 设置(4 KB 页面大小应用 200 字节,2 KB 页面大小应用 100 字节)。

  • DROP PCTFREE 子句   删除实例化视图的当前有效 PCTFREE 设置,并根据数据库页大小应用缺省 PCTFREE 值。

  • [ NOT ] ENCRYPTED 子句   指定是否加密实例化视图数据。缺省情况下,创建时不加密实例化视图的数据。要加密实例化视图,请指定 ENCRYPTED。要解密实例化视图,请指定 NOT ENCRYPTED。

  • REFRESH 子句   使用 REFRESH 子句更改实例化视图的刷新类型:

    • IMMEDIATE REFRESH   使用 IMMEDIATE REFRESH 子句将手动视图更改为快速视图。手动视图必须是有效的且未被初始化的,这样才能将刷新类型更改为 IMMEDIATE REFRESH。如果视图处于初始化状态,在执行 ALTER MATERIALIZED VIEW...IMMEDIATE REFRESH 前请执行 TRUNCATE 语句将状态更改为未初始化的状态。请参见TRUNCATE 语句

      有关在可将视图变更为 IMMEDIATE REFRESH 之前必须满足的条件的信息,请参见快速视图的附加限制

    • MANUAL REFRESH   MANUAL REFRESH 子句用于将快速视图更改为手动视图。

    有关刷新类型的详细信息,请参见手动和快速实例化视图

    有关状态的详细信息,请参见实例化视图状态和属性

注释

如果变更另一个用户拥有的实例化视图,必须通过包含该所有者来限定名称(例如,GROUPO.EmployeeConfidential)。如果不限定名称,数据库服务器就会查找具有您所拥有的那个名称的实例化视图,并对其进行变更。如果没有这样的视图,服务器将返回错误。

当禁用实例化视图(使用 DISABLE 子句)后,数据库服务器便无法再使用此视图来回应查询。此外,数据和索引被删除,刷新类型更改为手动。还会禁用所有相关的常规视图。

DISABLE 子句不仅要求对被禁用的视图具有独占访问权限,还要求对所有相关视图具有独占访问权限,因为这些视图也会被禁用。请参见启用和禁用实例化视图

若要加密实例化视图(使用 ENCRYPT 子句),必须在数据库中已启用表加密。然后系统会使用数据库创建时所指定的加密密钥和算法来加密实例化视图。请参见加密和解密实例化视图

权限

要执行 ALTER MATERIALIZED VIEW 语句,您必须拥有视图或具有 DBA 权限。

如果您不具有 DBA 权限但想将实例化视图变更为快速视图(使用 ALTER MATERIALIZED VIEW ...IMMEDIATE REFRESH 语句),那么您必须拥有视图以及它所引用的所有表。

用户对实例化视图可执行的更改数据操作仅有刷新、截断和禁用。但是,快速视图可由数据库服务器自动更新。即启用快速视图并进行初始化后,数据库服务器会就自动维护它,不需要附加的权限检查。

副作用

自动提交。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下语句创建 EmployeeConfid88 实例化视图,然后禁止它在优化中的使用:

CREATE MATERIALIZED VIEW EmployeeConfid88 AS
   SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID,
      Departments.DepartmentName, Departments.DepartmentHeadID
   FROM Employees, Departments
   WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid88;
ALTER MATERIALIZED VIEW GROUPO.EmployeeConfid88 DISABLE USE IN OPTIMIZATION;
小心

处理该示例时,应删除所创建的实例化视图。否则,在试验其它示例时,将无法对其基础表 Employees 和 Departments 执行模式更改。无法变更具有已启用相关实例化视图的表的模式。请参见删除实例化视图