创建实例化视图时,视图的刷新类型为手动。但可将其更改为快速。要从手动更改为快速,视图必须处于未初始化状态(不包含数据)。如果视图刚创建,还未刷新,则它未初始化。如果其中包含数据,则必须截断数据。视图还必须有唯一索引,必须符合快速视图要求的限制。请参见快速视图的附加限制。
只需更改视图的刷新类型即可随时将快速视图转换为手动视图。
以下过程说明如何将手动视图更改为快速视图。在执行其中一个过程之前,请验证手动视图是否有唯一索引且未初始化。然后还可以使用 sa_materialized_view_can_be_immediate 系统过程检查它是否符合立即刷新类型的条件。请参见sa_materialized_view_can_be_immediate 系统过程。
以具有 DBA 权限的用户身份,或视图及其引用的所有表的所有者身份连接到数据库。
在左窗格中,双击 [视图]。
右击实例化视图,并选择 [属性]。
在 [刷新类型] 字段中,选择 [立即]。
单击 [确定]。
以具有 DBA 权限的用户身份,或视图及其引用的所有表的所有者身份连接到数据库。
通过执行 ALTER MATERIALIZED VIEW ...IMMEDIATE REFRESH 语句将刷新类型更改为立即。
以下过程说明如何将快速视图更改为手动视图。
以视图所有者身份或以具有 DBA 权限的用户身份连接到数据库。
在左窗格中,双击 [视图]。
右击实例化视图,并选择 [属性]。
在 [刷新类型] 字段中,选择 [手工]。
单击 [确定]。
以视图所有者身份或以具有 DBA 权限的用户身份连接到数据库。
通过执行 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 执行模式更改。无法变更具有已启用相关实例化视图的表的模式。请参见删除实例化视图。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |