[오라클(oracle)] join update 힌트로 해결
안녕하세요.
테이블 2개를 사용하여 데이터를 update 할 경우가 많죠.
저는 예전에 postgre에서 사용하던게 머리에 남아서....
무심코 오라클에서 join update를 사용하였더니 에러가 나더라고요.
에러 내용입니다.
SQL 오류: ORA-01779: cannot modify a column which maps to a non key-preserved table
01779. 00000 - "cannot modify a column which maps to a non key-preserved table"
*Cause: An attempt was made to insert or update columns of a join view which
map to a non-key-preserved table.
*Action: Modify the underlying base tables directly.
왜 안되는지는 모르겠으나
힌트를 사용하여 해결하였습니다.
실제 사용쿼리
update /*+bypass_ujvc +*/
(
select
a.chg_dt
from tb01 a, tb02 b
where
b.chg_dt >= 20200225
and a.cl01 = b.cl01
and a.cl02 = b.cl02
) set col3 = null
;
위의 쿼리를 보시면
일반적인 update table set의 형태에서
table 부분에 join 쿼리가 들어가있는 형태 입니다.
그리고 update 옆에 /*+bypass_ujvc +*/ 의 힌트를 사용하였습니다.
참고하시면 좋을것 같네요.
모두 고생하세요.
'개발 > DB' 카테고리의 다른 글
오라클(oracle) 등 DB에서 IN절과 '=' 개념 차이 확인 (0) | 2022.08.30 |
---|---|
[oracle] 오라클 view 생성 등 기초 알아보기(view, mview) (0) | 2020.06.10 |
[oracle] synonym(동의어) 생성 및 삭제 (0) | 2020.06.09 |
[oracle]오라클 시퀀스(sequence) 생성 및 삭제 (0) | 2019.12.03 |
[오라클] 인덱스의 주의사항 및 관리방법(쿼리문 확인) (0) | 2019.12.03 |
[오라클] 인덱스의 원리 및 개념과 종류(B-TREE, BITMAP INDEX) (6) | 2019.11.30 |
오라클(oracle) pivot, unpivot 함수 활용 예제 (0) | 2019.11.14 |