通过MAX刷新提交视图

时间:2018-12-05 09:30:43

标签: oracle

我试图在没有where子句的表上创建实例化视图。但是"REFRESH ON COMMIT"被oracle拒绝。

是否有一种结构使其可更新? created是一个日期。

CREATE MATERIALIZED VIEW MV_SNR_LATEST REFRESH ON COMMIT
AS
SELECT * FROM T_SNR snr
WHERE (snr.created, snr.m_id, snr.snor, snr.ai)
IN (SELECT MAX(created), m_id, snor, ai 
FROM t_snr s2 GROUP BY s2.M_ID, s2.snor, s2.AI);

1 个答案:

答案 0 :(得分:0)

我认为不可能,请选中General Restrictions on Fast Refresh

  

实例化视图的定义查询受到如下限制:

     
      
  • 实例化视图中不得包含对非重复表达式(如SYSDATE和ROWNUM)的引用。

  •   
  • 实例化视图不得包含对RAW或LONG RAW数据类型的引用。

  •   
  • 它不能包含SELECT列表子查询。

  •   
  • 在SELECT子句中不能包含分析函数(例如RANK)。

  •   
  • 它不能引用在其上定义XMLIndex索引的表。

  •   
  • 它不能包含MODEL子句。

  •   
  • 它不能包含带有子查询的HAVING子句。

  •   
  • 它不能包含具有ANY,ALL或NOT EXISTS的嵌套查询。

  •   
  • 它不能包含[START WITH…] CONNECT BY子句。

  •   
  • 它不能包含位于不同站点的多个明细表。

  •   
  • ON COMMIT实例化视图不能具有远程明细表。

  •   
  • 嵌套的实例化视图必须具有联接或聚集。

  •   
  • 带有GROUP BY子句的物化联接视图和物化聚合视图不能从索引组织的表中选择。

  •