I want to create a MATERIALIZED VIEW from a LEFT JOIN of 2 tables. However the following gives me an error:
SELECT field1
FROM table_1 a
LEFT JOIN table_2 b
ON a.field1=b.field2
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized view
However the following works:
SELECT field1
FROM table_1 a, table_2 b
WHERE a.field1=b.field2
Does anyone have any ideas why this is happening.
Thx for the help
There are two conditions that are not satisfied to make that materialized view refresh fast. First one is that you did not specify the rowid columns of every table involved. And the second one is an undocumented restriction: ANSI-joins are not supported.
Here is an example with DEPT being table_1, alias a and EMP being table_2, alias b:
That mimics your situation. First add the rowid’s:
Still it cannot fast refresh, because of the ANSI joins. Converting to old-style outer join syntax:
And to prove that it works:
The ANSI-join syntax restriction is mentioned in point 6 in this blogpost.
Regards,
Rob.