これは、マテリアライズドビューが2つのテーブルに基づいているためです。主キーを持つ単一のテーブルに基づいてビューを作成すると、主キーがマテリアライズドビューに作成されます。必要に応じて、後でインデックスを作成できます。
SQL> create table t1(id number);
Table created.
SQL> create table t2(id number);
Table created.
SQL> alter table t1 add primary key (id);
Table altered.
SQL> alter table t2 add primary key (id);
Table altered.
SQL> CREATE MATERIALIZED VIEW MyMV
REFRESH COMPLETE ON DEMAND
AS
SELECT t1.*
FROM t1, t2 where t1.id=t2.id; 2 3 4 5
Materialized view created.
SQL> create unique index myindex on MyMV(id);
Index created.
編集
一意のインデックスの代わりに主キーを作成します:
SQL> alter materialized view MyMV add constraint PK_ID primary key (id);
Materialized view altered.
SQL> alter table t3 add constraint FK_TABLE3_MyMV foreign key (id) references MyMV (id);
Table altered.