我使用此查询在Oracle中创建了一个简单的物化视图
SELECT p.registration_no, s.sponsor_no, s.sponsor_name, p.resignation_date
FROM nmr_registration_public p, lct_sponsor s
WHERE p.sponsor_no = s.sponsor_no;
我已将其刷新模式设置为FORCE ON COMMIT
并且它正常工作。
我通过像这样添加NVL(p.resignation_date, SYSDATE)
语句来改变这样的查询
SELECT p.registration_no, s.sponsor_no, s.sponsor_name, NVL(p.resignation_date, SYSDATE)
FROM nmr_registration_public p, lct_sponsor s
WHERE p.sponsor_no = s.sponsor_no;
然后我收到这个错误
ORA-12054:无法为实例化视图设置ON COMMIT刷新属性
如果刷新模式设置为NVL
,则MView中不支持ON COMMIT
吗?有没有其他声明不支持ON COMMIT
?
问题不在于nvl
,而在于sysdate
物化视图的定义查询不能包含任何不可重复的表达式(ROWNUM,SYSDATE,不可重复的PL / SQL函数等)。