【发布时间】:2021-10-11 22:53:42
【问题描述】:
我使用 BUILD DEFERRED 子句创建了我的物化视图
CREATE MATERIALIZED VIEW mcastfilm
BUILD DEFERRED
REFRESH FORCE ON COMMIT
AS SELECT ms.name moviename,r.role,a.first_name, a.last_name FROM moviesmall ms, role r , actor a
WHERE ms.ID = r.movie_id
AND r.actor_id = a.id
暂时是空的。正如我从 Oracle 文档中看到的:
DEFERRED 指定 DEFERRED 表示物化视图是 由下一个 REFRESH 操作填充。第一个(延期) 刷新必须始终是完全刷新。直到那时, 物化视图的陈旧值为 UNUSABLE,因此不能 用于查询重写。
.. 我期望的是在我第一次插入一个表时填充的视图:
insert into moviesmall VALUES (400001,'My movie',2050,null);
commit;
但是,我的观点仍然是空洞的。我不得不执行:
EXEC DBMS_MVIEW.REFRESH('mcastfilm');
.. 更新我的观点。
我的问题是,Oracle 的“第一次(延迟)刷新必须始终是完全刷新”是什么意思?据我了解,“刷新”是由“REFRESH FORCE ON COMMIT”子句指定的,所以我希望在提交一张表时更新我的视图。
【问题讨论】: