het is omdat uw gematerialiseerde weergave is gebaseerd op twee tabellen. Als u uw weergave maakt op basis van een enkele tabel met een primaire sleutel, wordt de primaire sleutel gemaakt op uw gematerialiseerde weergave. U kunt de index achteraf nog steeds maken als u er een nodig hebt:
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.
BEWERKEN
maak een primaire sleutel in plaats van de unieke index:
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.