下面的小节将展示一个创建 REFRESH IMMEDIATE 类型的系统维护的 MQT 的例子这个表名为 EMP它基于 SAMPLE 数据库中的底层表 EMPLOYEE 和 DEPARTMENT由于 REFRESH IMMEDIATE MQT 要求来自查询内引用的每个表至少有一个惟一键要出现在 select 列表中所以我们首先在 EMPLOYEE 表的 EMPNO 列上定义一个惟一性约束另外还要在 DEPARTMENT 表的 DEPTNO 列上定义一个惟一性约束DATA INITIALLY DEFERRED 子句的意思是在执行 CREATE TABLE 语句的时候并不将数据插入到表中MQT 被创建好之后就会处于检查暂挂(check pending)状态在对它执行 SET INTEGRITY 语句之前不能查询它IMMEDIATE CHECKED 子句指定必须根据用于定义该 MQT 的查询对数据进行检查并刷新数据NOT INCREMENTAL 子句指定对整个表进行完整性检查
CONNECT TO SAMPLE
ALTER TABLE EMPLOYEE ADD UNIQUE (EMPNO)
ALTER TABLE DEPARTMENT ADD UNIQUE (DEPTNO)
CREATE TABLE EMP AS (SELECT EEMPNO EFIRSTNME ELASTNAME EPHONENO DDEPTNO
SUBSTR(DDEPTNAME ) AS DEPARTMENT DMGRNO FROM EMPLOYEE E DEPARTMENT D
WHERE EWORKDEPT = DDEPTNO)
DATA INITIALLY DEFERRED REFRESH IMMEDIATE
SET INTEGRITY FOR EMP IMMEDIATE CHECKED NOT INCREMENTAL
[] []