带有主键的Oracle物化视图

时间:2017-09-19 08:21:32

标签: oracle primary-key materialized-views

我在下面创建了Oracle物化视图:

CREATE MATERIALIZED VIEW MyMV
REFRESH COMPLETE ON DEMAND
AS

SELECT t1.*
  FROM table1 t1, table2 t2 where t1.id=t2.id;

table1有一个主键,MV已成功创建,但主键未在物化视图表中创建。

有没有其他方法可以用主键创建MV?

1 个答案:

答案 0 :(得分:3)

这是因为您的物化视图基于两个表,如果您基于具有主键的单个表创建视图,则在物化视图上创建主键。 如果需要,您仍然可以在之后创建索引:

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.