Oracle ORA:12054使用UNION ALL创建物化视图
当我做这个动作时,我似乎得到了ORA:12054。我真的很感谢你的帮助。 多谢各位Oracle ORA:12054使用UNION ALL创建物化视图,oracle,exception,materialized-views,union-all,Oracle,Exception,Materialized Views,Union All,当我做这个动作时,我似乎得到了ORA:12054。我真的很感谢你的帮助。 多谢各位 create table daniel (id number, name varchar2(40)); alter table daniel add constraint daniel_pk primary key(id); create materialized view log on daniel with rowid; create materialized view mv_test refresh fa
create table daniel (id number, name varchar2(40));
alter table daniel add constraint daniel_pk primary key(id);
create materialized view log on daniel with rowid;
create materialized view mv_test
refresh fast on commit as
select id, name, rowid rid
from daniel
UNION ALL
select id, name, rowid rid
from daniel;
创造物化了的奥拉
谢谢 甲骨文抛出ORA-12054异常是因为该联盟。它不喜欢复制品。删除ALL关键字,您就有了一个有效的MView,但也有一个讨厌的MView:您还可以完全删除第二个查询,因为您不会有重复的MView 当然,MView查询的虚假本质可能只是简化了测试用例的方式的产物。如果是这样的话,如果你提出一个更现实的方案,这将有助于我们了解你的情况 请注意,尽管删除ALL会为您提供一个有效的MView,但您仍然无法创建它。MView日志只指定ROWID,这意味着您无法使用刷新快速选项创建MView。要么选择完全刷新,要么需要在日志规范中包含主键:
SQL> create materialized view mv_test
refresh fast on commit as
select id, name, rowid rid
from daniel 2 3 4
5 /
from daniel
*
ERROR at line 4:
ORA-23415: materialized view log for "APC"."DANIEL" does not record the primary key
SQL> drop materialized view log on daniel ;
Materialized view dropped.
SQL> create materialized view log on daniel with rowid, primary key;
Materialized view log created.
SQL> create materialized view mv_test
refresh fast on commit as
select id, name, rowid rid
from daniel 2 3 4
5 /
Materialized view created.
SQL>
欢迎来到SO。例如,如果您进行搜索,会有大量的答案-我怀疑此SQL被认为“太复杂”,无法进行快速刷新,可能是因为视图中没有唯一的键。。?