oracle物化视图能否删除列,物化视图:基表增加删除列

SQL> create table lgx (a int ,b varchar2(10));

Table created

SQL> insert into lgx values( 1, 'a');

1 row inserted

SQL> commit;

Commit complete

SQL> CREATE MATERIALIZED VIEW LOG ON lgx WITH ROWID;

Materialized view log created

SQL>

SQL> CREATE MATERIALIZED VIEW mv_lgx

2  REFRESH FAST ON DEMAND

3  WITH ROWID

4  START WITH TO_DATE('17-08-2009 17:09:16', 'DD-MM-YYYY HH24:MI:SS') NEXT /*1:HRS*/ SYSDATE + 1/(24*60)

5  AS

6  SELECT * FROM lgx;

Materialized view created

SQL>

SQL> select * from mv_lgx;

A B

--------------------------------------- ----------

1 a

SQL> select job,what from all_jobs;

JOB WHAT

---------- --------------------------------------------------------------------------------

145 dbms_refresh.refresh('"LGX_TEST"."MV_LGX"');

SQL> alter table lgx add (c int);

Table altered

SQL> insert into lgx values( 2, 'a',1);

1 row inserted

SQL> commit

2  ;

Commit complete

SQL> select * from lgx;

A B                                                C

--------------------------------------- ---------- ---------------------------------------

1 a

2 a                                                1

SQL> select * from mv_lgx;

A B

--------------------------------------- ----------

1 a

SQL> exec dbms_job.run(145);

PL/SQL procedure successfully completed

SQL> select * from mv_lgx;

A B

--------------------------------------- ----------

1 a

2 a

SQL> alter table lgx drop (c );

Table altered

SQL> exec dbms_job.run(145);

PL/SQL procedure successfully completed

SQL> select * from mv_lgx;

A B

--------------------------------------- ----------

1 a

2 a

SQL> alter table lgx drop (b ) ;

Table altered

SQL> select * from lgx;

A

---------------------------------------

1

2

SQL> exec dbms_job.run(145);

PL/SQL procedure successfully completed

SQL> select * from mv_lgx;

A B

--------------------------------------- ----------

1 a

2 a

SQL> insert into lgx values(3);

1 row inserted

SQL> commit;

Commit complete

SQL> select * from lgx;

A

---------------------------------------

1

2

3

SQL> exec dbms_job.run(145);

begin dbms_job.run(145); end;

ORA-12011: execution of 1 jobs failed

ORA-06512: at "SYS.DBMS_IJOB", line 406

ORA-06512: at "SYS.DBMS_JOB", line 272

ORA-06512: at line 2

SQL> rename mv_lgx to mv_lgx2;

rename mv_lgx to mv_lgx2

ORA-32318: cannot rename a materialized view

SQL>

结论:

master表增加列对物化视图的刷新没有影响,但增加的新列不能在物化视图中显示,需要重建物化视图.

master表删除列会导致物化视图刷新失败,但对增列的删除不受影响.

不能重命名物化视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值