Oracle &引用;此视图上的数据操作不合法”;发生在用户表中

Oracle &引用;此视图上的数据操作不合法”;发生在用户表中,oracle,Oracle,当我尝试在属于我正在使用的用户的表上插入值时,会发生此错误: SQL Error: ORA-01732: data manipulation operation not legal on this view *Cause: *Action: 在所有的地方,人们都说它是在试图插入/更新/删除视图时发生的,但它肯定是一个表,用户拥有所需的特权 因此,除了尝试使用视图执行ilegal操作之外,还有其他原因导致这种情况发生吗?第一件事:您真的确定它是一个表吗?从您提出问题的方式来看,可能是遇到

当我尝试在属于我正在使用的用户的表上插入值时,会发生此错误:

SQL Error: ORA-01732: data manipulation operation not legal on this view
*Cause:    
*Action:
在所有的地方,人们都说它是在试图插入/更新/删除视图时发生的,但它肯定是一个表,用户拥有所需的特权

因此,除了尝试使用视图执行ilegal操作之外,还有其他原因导致这种情况发生吗?

第一件事:您真的确定它是一个表吗?从您提出问题的方式来看,可能是遇到此问题的用户不拥有该表。在这种情况下,可能有一个同义词或其他东西真正指向一个视图


第二件事可能是,如果表上有一个触发器,并且是它触发的操作导致了问题。

我将激活SQL跟踪并再次尝试插入,然后查看跟踪文件以确定是什么SQL语句导致了错误

如果,正如其他人所建议的,它是由触发器针对其他对象执行的SQL,那么您将在跟踪中看到它是递归SQL,并且将清楚地知道所涉及的对象

如果跟踪中没有递归SQL,那么很可能您没有访问您认为是的对象,并且跟踪应该显示正在使用的实际对象ID,您可以对照数据字典进行检查

如果它实际上只是一个表,并且不涉及递归SQL,那么听起来您有理由支持Oracle。

再考虑一下

试着在桌子上有一个明确的标识,如下所示:

insert into myschema.mytable () values ()...

以防万一本地还有另一个。

另一个答案是:我在尝试将记录插入物化视图表时遇到了这个错误。

我猜您最可能看到的是物化视图而不是表。寻找

Select from user_objects

在字典中查看对象类型。

我知道这是一篇非常古老的文章,但仅供参考,“表”实际上是一个物化视图(mview)。mview未配置为允许更新,因此无法在其上插入/更新/删除

通过运行以下命令,可以获得所有物化视图的列表:

select * from user_mviews

出现此错误的另一种情况是,当您尝试使用不存在的列更新数据时:

update house set color = 'blue' where street = 'ABC';
street
列不存在于表
house


由于无法对物化视图执行删除,因此需要从更新物化视图的推送表中删除数据,然后刷新这些表

例如: 我想删除表1和表2中的数据,它们是物化视图。目前,这两个表的数据是从表3中推送出来的。我需要删除表3中的数据,然后刷新表1和表2的视图

刷新视图后,这些数据不应再出现在表1、2和3中


希望这对2020年有所帮助

嗨,是的,我确定这是一张桌子。我尝试对很多用户(包括模式)这样做,然后我给其他用户特权尝试iSeries,但它不起作用。这不是同义词,但是,我正在与Oracle SQL Developer合作,而该工具无法获取表的SQL代码,这可能意味着表已损坏或类似的情况?谢谢谢谢你,你说得对,那不是一张桌子。这是一个物化的表,但它是如何在其他正常表之间显示的,而不是在视图之间,物化视图之间或同义词之间显示的,我认为这是一个表。我只是不明白为什么sql开发人员将其组织为一个表。很抱歉给您带来不便,我正在学习sql和oracle。非常感谢。@ThiagoMelo-我几乎在第一段末尾加入了“或物化视图”。但愿我现在有:)谢谢你,我从来没有这样做过。我不知道发生这种情况的确切原因,但正如您所说,它不是一个表,而是一个物化视图,但创建它的脚本看起来像一个普通的表声明。在sql developer中,它显示为一个表。所以,非常感谢你。很抱歉,这个问题没有准确地解释我需要什么,我对oracle和sql基本上一无所知。谢谢。过了一会儿才意识到我试图插入的表实际上属于一个物化视图。。