如何做到物化视图的自动刷新

Posted

技术标签:

【中文标题】如何做到物化视图的自动刷新【英文标题】:How to do automatic refresh of materialized views 【发布时间】:2019-01-08 11:31:18 【问题描述】:

我想在创建物化视图时将数据插入表后自动刷新物化视图。

我尝试了以下代码(以 Creating materialized view that refreshes every 5 min 开头的完整刷新)但无法正常工作。此代码也是每 1 分钟刷新一次的解决方案。

我想要插入数据时的解决方案。有可能吗?

Create Materialized view temp_mv refresh complete start with (sysdate) next (sysdate+1/1440) with rowid as select * from temp;

【问题讨论】:

您是否尝试过创建触发器并显式刷新view 使用视图而不是物化视图。那么数据总是“新鲜的”。 “不工作”不是很有帮助。您似乎正在寻找on commit refresh;但看看限制,看看你的 MV 是否适合。 Read more. 【参考方案1】:

您可以试试这个,但它不适用于更复杂的视图。

  --create table
    create table temp (a int not null primary key);


    -- create table log; 
    create materialized view log on temp
    with primary key
    including new values;

    --create view 
    create materialized view temp_mv
    build immediate 
    refresh fast
    on commit
    as
    select * from temp;


    -- populate table 
    insert into  temp select level from dual connect by level <100;

    select * from temp_mv; -- no value 

    commit; -- view is refreshed


    select * from temp_mv; -- all values

【讨论】:

以上是关于如何做到物化视图的自动刷新的主要内容,如果未能解决你的问题,请参考以下文章

如何一次刷新 Postgresql 9.3 中的所有物化视图?

oracle物化视图不会自动更新是怎么回事

刷新物化视图时,索引是不是也会自动刷新?

使用规则或通知自动刷新物化视图

Redshift 物化视图不刷新或删除

Oracle-视图