ORA-01779: 无法修改与非键值保存表对应的列

问题描述

 错误报告 -
SQL 错误: ORA-01779: 无法修改与非键值保存表对应的列
01779. 00000 -  "cannot modify a column which maps to a non key-preserved table"
*Cause:    An attempt was made to insert or update columns of a join view which
           map to a non-key-preserved table.
*Action:   Modify the underlying base tables directly.

这个错误产生的原因是子查询的结果中,用来更新demo_t1的demo_t2表id不唯一,导致被更新对象test1中的一行可能要对应test2中的很多行,这样oracle就不知道该怎么更新

例如demo_t1中fname A fmoney '20'有可能对应demo_t2中fname A fmoney '100', ifname A fmoney '200' 这2个数据,所以导致无法更新. 

解决办法

删除重复数据 给demo_t2加上一个主键

ALTER TABLE DEMO_T2 ADD PRIMARY KEY(FNAME);

再次尝试,更新成功

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Terence全栈开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值