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

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

问题描述

55.png56.png

这个错误产生的原因是子查询的结果中,用来更新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个数据,所以导致无法更新.  57.png


解决办法

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

ALTER TABLE DEMO_T2 ADD PRIMARY KEY(FNAME);

再次尝试,更新成功58.png


57.png57.png

相关文章
|
11月前
|
SQL Oracle 关系型数据库
Oracle 将表中的数据查出更改某一字段的值后再插入该表
Oracle 将表中的数据查出更改某一字段的值后再插入该表
205 2
|
SQL Oracle 关系型数据库
Oracle多行数据合并为一行数据,并将列数据转为字段名
Oracle多行数据合并为一行数据,并将列数据转为字段名
|
SQL Oracle 关系型数据库
Oracle增加修改删除字段/主键
Oracle增加修改删除字段/主键
147 0
|
SQL 关系型数据库 MySQL
MySql基础-笔记11-临时表、复制表、元数据、序列使用
MySql基础-笔记11-临时表、复制表、元数据、序列使用
194 0
MySql基础-笔记11-临时表、复制表、元数据、序列使用
|
设计模式 数据库
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
Access2016删除主键列(图文操作)错误提示:若要删除主键,请在“设计”视图中打开该表并删除主键字段
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
798 0
Mysql数据库表字段设计优化(状态列)
DataTable 修改列名 删除列 调整列顺序
DataTable 修改列名 删除列 调整列顺序
246 0
|
SQL 关系型数据库 MySQL
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
1721 0
MYSQL 查找单个字段或者多个字段重复数据,清除重复数据
下一篇
oss创建bucket