2013年11月13日 星期三

Oracle - Update Join 又失敗~~~again ORA-01779


之前因為用 Join 要更新 table 失敗,
查了一下,只要用子查詢的方式就可以了,
Oracle - Update 不可以用 Join ?

但是今天又不行了,
跳出了 ORA-01779 的錯誤訊息!
查了一下,說是子查詢 Join 出來的不是唯一,
可能會有多筆資料的意思!

就是說要 Update A 然後 A Join B 出來的資料 A 跟 B 不是 一對一,
可能 A 會對到兩筆 B,不過明明我已經把所有的 Key 都加上去了,
不曉得會不會是因為我的 A, B 是同一個 Table 的關係?

查到別的文章都說要加 key, index,
不過這個我原本就有 pk 啊?

所以最後我就採用了跳過不檢查的選項啦!

UPDATE (
SELECT /*+BYPASS_UJVC*/A.*, B.VALUE AS VALUE_B
FROM A JOIN B ON A.KEY = B.KEY
)
SET VALUE = VALUE + VALUE_B;

不過這樣代表有一定的危險性,
我是會先下SELECT來看看資料是不是我要的啦!
所以請小心服用!

參考:【解决ORA-01779错误