I have a table that does not have a primary key:
I'm able to create MV logs on the table — without specifying whether to use the primary key or the rowid:
create materialized view log on maximo.workorder;
It looks like Oracle has chosen to create the MV logs using the primary key option (even though the table doesn't have a primary key):
I've tested the MV logs and they are working correctly. Any edits that I make to the WORKORDER table are showing up in the MV logs.
Why is it possible for Oracle to create the MV logs using the primary key option — even though the table doesn't have a primary key?
Edit:
Related question here: Create fast-refresh MV over dblink on table without PK?
Best Answer
A unique constraint on a
NOT NULL
column (which you have, as I checked this table in a database where Maximo was installed) is a good enough substitute for a primary key in this case.