使用MAX分组在提交视图时刷新



我正试图在没有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);

我认为这不可能,请查看快速刷新的一般限制

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

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

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

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

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

  • 它不能引用定义了XMLIndex索引的表。

  • 它不能包含MODEL子句。

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

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

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

  • 它不能包含不同站点的多个详细信息表。

  • ON COMMIT物化视图不能具有远程详细信息表。

  • 嵌套的物化视图必须具有联接或聚合。

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

最新更新