dzieje się tak, ponieważ widok zmaterializowany jest oparty na dwóch tabelach, jeśli utworzysz widok na podstawie pojedynczej tabeli z kluczem podstawowym, klucz podstawowy zostanie utworzony w widoku zmaterializowanym. Nadal możesz utworzyć indeks później, jeśli go potrzebujesz:
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.
EDYTUJ
utwórz klucz podstawowy zamiast unikalnego indeksu:
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.