【问题标题】:SQL Error: ORA-01732: data manipulation operation not legal on this viewSQL 错误:ORA-01732:此视图上的数据操作操作不合法
【发布时间】:2013-09-02 02:34:48
【问题描述】:

我正在使用 oracle 10g 和 sql developer 来编写查询。

我有一个用户ESTRADM,它有一些表格和一些物化视图。我正在尝试在表 MTEP_THREEDS_CARD_MASTER 中插入一行,并且其各自的物化视图是 MTEP_THREEDS_CARD_MASTER(表和视图具有相同的名称)。

现在当我执行查询时

insert into ESTRADM.MTEP_THREEDS_CARD_MASTER values (col1,col2,..);

它给了我一个错误:

错误报告:
SQL 错误:ORA-01732:此视图上的数据操作操作不合法
01732. 00000 - “数据操作操作在此视图上不合法”
*原因:
*行动:

我的实体化视图已禁用 QUERY REWRITE。

我不明白为什么它试图插入视图为什么它没有写入表? 如何在表格中插入一行?

【问题讨论】:

  • 表和视图在同一个模式中?在同一架构中,表和视图不能具有相同的名称。
  • 实际上我已经从 .dmp 导入了架构,它已经导入了物化视图和表,表和物化视图具有相同的名称。
  • 其实我没有管理员权限所以不能重命名。
  • DBA 可以重命名或请求提供执行任务所需的权限。
  • 可能是因为我不是管理员,所以我无法更改表,因为我也无法从普通用户访问 sqlplus,并且我以管理员身份安装了 oracle 10g 和 sql developer用户

标签: sql oracle


【解决方案1】:

只有物化视图的子集可以直接修改,为了做到这一点,它们必须遵守文档中规定的 strist 规则:http://docs.oracle.com/cd/B19306_01/server.102/b14226/repmview.htm

如果您的 MV 定义满足这些限制并且仍然不可修改,则发布 MV 的定义以及它引用的所有表的完整定义,包括约束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    • 1970-01-01
    • 2013-09-05
    • 2015-06-15
    • 2015-11-11
    相关资源
    最近更新 更多