【发布时间】:2011-11-22 05:33:30
【问题描述】:
所以我很确定 Oracle 支持这一点,所以我不知道我做错了什么。此代码有效:
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 手册,但无济于事。谢谢!
【问题讨论】:
-
你试过
DBMS_MVIEW.EXPLAIN_MVIEW吗?它应该向您显示视图的可用选项? -
我要做的第一件事是在 select 子句中丢失 *。不确定视图将如何处理重复的列名
-
是的,我一直在试图弄清楚如何运行 DBMS_MVIEW.EXPLAIN_MVIEW 但还没有让它工作 - 抱歉,我对 Oracle 很陌生。
标签: sql database oracle oracle11g