2012-04-17 5 views
-1

独自のキー列を持たない表があり、自己結合を使用して一括更新を実行したいとします。Oracleでのバルク更新でエラーが発生しました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: cannot modify a column which maps to a non key-preserved table.

は、ユニークな制約を加えること以外の解決策はあります:)

+0

あなたには、回答があり、明らかである質問がたくさんありますあなたを助けましたが、あなたは彼らを受け入れていませんでした(http://u.sbhat.me/t6SXUH)。してください他の人はあなたを助けるために傾けていないかもしれません。 – Sathya

答えて

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>>) 
関連する問題