所以我很确定甲骨文支持这一点,所以我不知道我做错了什么。此代码有效:
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.* FROM TPM_PROJECTVERSION V;
如果我添加一个 JOIN,它会中断:
CREATE MATERIALIZED VIEW MV_Test
NOLOGGING
CACHE
BUILD IMMEDIATE
REFRESH FAST ON COMMIT
AS
SELECT V.*, P.* FROM TPM_PROJECTVERSION V
INNER JOIN TPM_PROJECT P ON P.PROJECTID = V.PROJECTID
现在我得到错误:
ORA-12054: 无法为实体化视图设置 ON COMMIT 刷新属性
我已经在 TPM_PROJECT 和 TPM_PROJECTVERSION 上创建了物化视图日志。 TPM_PROJECT 的主键为 PROJECTID,TPM_PROJECTVERSION 的复合主键为 (PROJECTID,VERSIONID)。这有什么诀窍?我一直在挖掘 Oracle 手册,但无济于事。谢谢!
原文由 Mike Christensen 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,从 Oracle 数据库数据仓库指南:
这意味着您的声明将需要如下所示:
另一个需要注意的关键方面是您的物化视图日志必须创建为
with rowid
。下面是一个功能测试场景: