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 的用法 » 创建数据库 » 使用数据库对象 » 使用实例化视图

 

将手动视图更改为快速视图

创建实例化视图时,视图的刷新类型为手动。但可将其更改为快速。要从手动更改为快速,视图必须处于未初始化状态(不包含数据)。如果视图刚创建,还未刷新,则它未初始化。如果其中包含数据,则必须截断数据。视图还必须有唯一索引,必须符合快速视图要求的限制。请参见快速视图的附加限制

只需更改视图的刷新类型即可随时将快速视图转换为手动视图。

以下过程说明如何将手动视图更改为快速视图。在执行其中一个过程之前,请验证手动视图是否有唯一索引且未初始化。然后还可以使用 sa_materialized_view_can_be_immediate 系统过程检查它是否符合立即刷新类型的条件。请参见sa_materialized_view_can_be_immediate 系统过程

♦  将手动视图更改为快速视图 (Sybase Central)
  1. 以具有 DBA 权限的用户身份,或视图及其引用的所有表的所有者身份连接到数据库。

  2. 在左窗格中,双击 [视图]。

  3. 右击实例化视图,并选择 [属性]。

  4. 在 [刷新类型] 字段中,选择 [立即]。

  5. 单击 [确定]。

♦  将手动视图更改为快速视图 (SQL)
  1. 以具有 DBA 权限的用户身份,或视图及其引用的所有表的所有者身份连接到数据库。

  2. 通过执行 ALTER MATERIALIZED VIEW ...IMMEDIATE REFRESH 语句将刷新类型更改为立即。

以下过程说明如何将快速视图更改为手动视图。

♦  将快速视图更改为手动视图 (Sybase Central)
  1. 以视图所有者身份或以具有 DBA 权限的用户身份连接到数据库。

  2. 在左窗格中,双击 [视图]。

  3. 右击实例化视图,并选择 [属性]。

  4. 在 [刷新类型] 字段中,选择 [手工]。

  5. 单击 [确定]。

♦  将快速视图更改为手动视图 (SQL)
  1. 以视图所有者身份或以具有 DBA 权限的用户身份连接到数据库。

  2. 通过执行 ALTER MATERIALIZED VIEW ...MANUAL REFRESH 语句将刷新类型更改为手动。

示例

以下示例创建一个实例化视图,然后对其初始化。随后,添加唯一索引,因为快速视图必须具有唯一索引。由于在更改刷新类型时,视图内不得包含数据,因而需截断视图。最后,刷新类型得以更改。

CREATE MATERIALIZED VIEW EmployeeConfid44 AS
   SELECT EmployeeID, Employees.DepartmentID, 
          SocialSecurityNumber, Salary, ManagerID, 
          Departments.DepartmentName, Departments.DepartmentHeadID
     FROM Employees, Departments
     WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid44;
CREATE UNIQUE INDEX EmployeeIDIdx 
   ON EmployeeConfid44 ( EmployeeID );
TRUNCATE MATERIALIZED VIEW EmployeeConfid44;
ALTER MATERIALIZED VIEW EmployeeConfid44 
   IMMEDIATE REFRESH;

以下语句将刷新类型重新更改回手动:

ALTER MATERIALIZED VIEW EmployeeConfid44 
   MANUAL REFRESH;
小心

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

另请参见