我在预建表的顶部创建了一个物化视图。 现在我想只删除物化视图层并保留基础表。
我尝试使用此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不为空。
修改
所以经过一些测试,我发现只有在用这个创建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 ( ... );
所以下面的问题是为什么会发生这种情况?再一次,我怎么能解决这个问题呢?