【问题标题】:TOAD-Modify Materialized View Select Query without droppingTOAD-修改物化视图选择查询而不丢弃
【发布时间】:2013-01-25 21:56:12
【问题描述】:

有什么方法可以编辑 MVIEW 查询而不将其放入 TOAD。我不确定我们是否可以这样做?如果不能,我可以如何以不影响表格内容的方式进行?

提前致谢

【问题讨论】:

    标签: oracle10g toad materialized-views


    【解决方案1】:

    您无法更改物化视图查询,您必须删除并重新创建它。

    见:http://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_2001.htm

    使用 ALTER MATERIALIZED VIEW 语句修改现有的 通过以下一种或多种方式实现物化视图:

    • 改变其存储特性

    • 更改其刷新方法、模式或时间

    • 改变其结构,使其成为不同类型的物化 查看

    • 启用或禁用查询重写

    【讨论】:

    • 所以我需要获取用于该 MVIEW 的确切 DDL 并删除旧的并重新创建它?对吗?所以旧 MVIEW 中已有的数据也将被删除?
    • 我很确定这就是我所说的。我不确定您认为数据库可以做什么 - 如果您更改查询,数据将不再正确。
    • 是的,我同意。万一我放弃它..我能用相同的名称重新创建它吗?我需要相同的名称,否则我将不得不重命名旧名称。
    • 是的,您可以使用相同的名称。
    【解决方案2】:

    正如 Jeffre Kemp 所指出的,您无法更改现有物化视图的查询。

    但是,如果您预计将来需要进行更改,您可以选择以下方法之一:

    • 使用完成所有繁重工作的中间视图;你的 MATERIALIZED VIEW 然后做一个简单的SELECT * FROM myView。这允许您更改查询 - 但是,它不允许您在 MATERIALIZED VIEW 中添加/删除列
    • 为您的物化视图使用预先构建的表格;这在逻辑上将保存内容的 TABLE 与用于更新内容的查询分开。现在,您可以删除 MATERIALIZED VIEW,根据需要从 TABLE 中添加/删除列,然后重新创建 MATERIALIZED VIEW
    • 对查询 MATERIALIZED VIEW 的所有代码使用同义词;如有必要,使用 CTAS 创建一个备份表,将同义词指向此备份表,删除并重新创建您的 MATERIALIZED VIEW,将同义词指向 MATERIALIZED VIEW,然后删除您的备份表(我们就是这样做的)李>

    【讨论】:

      猜你喜欢
      • 2011-05-15
      • 2022-11-24
      • 2020-09-21
      • 2018-11-10
      • 2021-10-24
      • 1970-01-01
      • 2022-06-16
      • 2020-09-06
      • 2021-06-23
      相关资源
      最近更新 更多