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

时间:2012-04-17 11:11:36

标签: 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:无法修改映射到非密钥保留的列   表

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

1 个答案:

答案 0 :(得分:3)

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

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>>)