-1

一意のキー列を持たないテーブルがあり、自己結合を使用して一括更新を実行したいと考えています。

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: 非キー保存表にマップする列は変更できません。

一意の制約を追加する以外の解決策はありますか:)

4

1 に答える 1

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>>)
于 2012-04-17T11:45:36.330 に答える