【发布时间】:2012-02-11 14:38:04
【问题描述】:
ALTER TABLE RECORDINGS ADD PRIMARY KEY (ID);
CREATE MATERIALIZED VIEW LOG ON RECORDINGS TABLESPACE USERS NOLOGGING;
DROP MATERIALIZED VIEW REC_SEARCH_TEST;
CREATE MATERIALIZED VIEW REC_SEARCH_TEST
REFRESH COMPLETE ON COMMIT
AS (
SELECT DISTINCT ID, TITLE FROM RECORDINGS
);
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
无法理解这里有什么问题,我知道如果我取出 DISTINCT 子句它可以工作,但是如果我指定 'REFRESH COMPLETE ON COMMIT' 是必需的,为什么我不能使用 'DISTINCT'。
如果我按需使用 DISTINCT 和 REFRESH 没有问题,但这些不是要求。
【问题讨论】:
-
你有一个唯一的索引。不需要独特的,为什么要打扰它呢?
-
也许这个例子不是最好的,因为我想将视图扩展到一个需要不同关键字的更复杂的查询,现在我只是想让它在基本级别上工作.
-
DISTINCT根本没有任何意义。选择中的ID列将导致所有行始终不同。 -
好的,对于 OP 来说很好。 8 年后我碰巧在这里,我有一个案例我确实需要
DISTINCT,所以这解决了我的问题;只是不能使用ON COMMIT
标签: oracle plsql views materialized-views