DROP MATERIALIZED VIEW mv_name PRESERVE TABLE删除预构建表中的行

时间:2015-12-21 16:13:16

标签: sql oracle oracle11g

我在预建表的顶部创建了一个物化视图。 现在我想只删除物化视图层并保留基础表。

我尝试使用此link中的信息中的PRESERVE TABLE子句,但它仍然删除了所有行,并在删除实体化视图层后仅返回表的模板。

这是我运行的脚本:

CREATE TABLE SCHEMA.TABLE_COPY AS 
(
  SELECT * 
  FROM SCHEMA.TABLE_ORIGINAL
);

CREATE MATERIALIZED VIEW SCHEMA.TABLE_COPY
REFRESH FORCE ON DEMAND START WITH SYSDATE+0 NEXT SYSDATE+1/24
ON PREBUILT TABLE AS ( ... );

DROP MATERIALIZED VIEW SCHEMA.TABLE_COPY 
PRESERVE TABLE;

SELECT * 
FROM SCHEMA.TABLE_COPY;

从最后一个select语句中,我得到一个没有行的空表模板。 TABLE_ORIGINAL不为空。

  • 为什么我会得到这个结果?
  • 如何修复查询以保留TABLE_ORIGINAL?
  • 中的原始数据

修改

所以经过一些测试,我发现只有在用这个创建mv时才会发生这种情况:

CREATE MATERIALIZED VIEW SCHEMA.TABLE_COPY
REFRESH FORCE ON DEMAND START WITH SYSDATE+0 NEXT SYSDATE+1/24
ON PREBUILT TABLE AS ( ... );

但这很好:

CREATE MATERIALIZED VIEW SCHEMA.TABLE_COPY
ON PREBUILT TABLE AS ( ... );

所以下面的问题是为什么会发生这种情况?再一次,我怎么能解决这个问题呢?

0 个答案:

没有答案