Oracle中的批量更新出现错误ORA-01779

Oracle中的批量更新出现错误ORA-01779,oracle,Oracle,我有一个没有任何唯一键列的表,我想使用自连接执行批量更新 Update ( select t1.Col1 col1, t2.col1 col2 from table t1 inner join table t2 on <join condtn> where <condtn> ) Set col1 = col2 但由于该表没有唯一的键列,因此会出现错误: ORA-01779:无法修改映射到非保留键的列 桌子 除了添加唯一约束之外,还有其他解决方案吗:您应该能够重构查询以

我有一个没有任何唯一键列的表,我想使用自连接执行批量更新

Update 
(
select t1.Col1 col1, t2.col1 col2
from table t1
inner join table t2 on <join condtn>
where <condtn>
)
Set col1 = col2
但由于该表没有唯一的键列,因此会出现错误:

ORA-01779:无法修改映射到非保留键的列 桌子


除了添加唯一约束之外,还有其他解决方案吗:

您应该能够重构查询以执行相关更新

UPDATE table t1
   SET col1 = (SELECT col1
                 FROM table t2
                WHERE t1.<<some column>> = t2.<<some column>>)
 WHERE EXISTS( SELECT 1
                 FROM table t2
                WHERE t1.<<some column>> = t2.<<some column>>)

你有一大堆问题已经得到了回答,显然对你有所帮助,但你没有。请不要这样做,否则人们可能不愿意帮助你。