【问题标题】:Oracle Materialized View. Build Deferred clauseOracle 物化视图。构建延迟子句
【发布时间】: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”子句指定的,所以我希望在提交一张表时更新我的​​视图。

【问题讨论】:

    标签: oracle materialized-views


    【解决方案1】:

    我理解文档所说的方式,正是你所做的:

    EXEC DBMS_MVIEW.REFRESH('mcastfilm');
    

    那是

    第一次(延迟)刷新必须始终是完全刷新

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多