仅当选择查询在 oracle 中返回数据时才刷新的具体化视图


Create materialized view mv_testdata
BUILD IMMEDIATE
REFRESH FORCE
AS
SELECT * FROM VW_TESTDATA;

我希望视图每周刷新一次,并且仅在视图中的数据可用时刷新vw_testdata。也尝试使用触发器,但没有奏效。

是否可以仅刷新视图中可用的 mv 数据?

如果vw_testdata是"普通"视图,则它是存储查询,不包含任何数据。我想你担心的是 - 如果该查询(在某个时候(获取"无"并且您刷新物化视图,您将丢失物化视图中的数据。

如果是这样,请创建一个存储过程,例如

create or replace procedure p_refresh as
l_cnt number;
begin
select max(1) 
into l_cnt
from vw_testdata
where exists (select null from vw_testdata);
if l_cnt = 1 then
dbms_mview.refresh('mv_testdata');
end if;
end;
/

它检查vw_testadata中是否存在任何内容;如果有,它将刷新物化视图。

现在安排每周执行该过程。

最新更新