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
中是否存在任何内容;如果是这样,它将刷新实例化视图。
现在计划每周执行一次该程序。