SQL 오류: ORA-38104: ON 절에서 참조되는 열은 갱신할 수 없음:
38104. 00000 - "Columns referenced in the ON Clause cannot be updated: %s"
*Cause: LHS of UPDATE SET contains the columns referenced in the ON Clause
얼마전 MERGE 문을 실행하다가 ORA-38104 오류를 만났다.
원인은 ON절에서 쓰인 칼럼을 UPDATE에 포함을 시켜서였다. 멍 때리고 아무 생각 없이 하다 보니 이런 간단한 실수를 했던 것 같다.
MERGE INTO BOOK_INFO_TBL A USING
(SELECT '1111' AS BOOK_KEY,
SYSDATE AS INSTALL_DATE,
0 AS WORK_TYPE,
'311' AS CODE
FROM DUAL
) B ON (A.BOOK_KEY = B.BOOK_KEY)
WHEN MATCHED THEN
UPDATE
SET
--ON 절 조건 지우기
--A.BOOK_KEY = B.BOOK_KEY,
A.INSTALL_DATE = B.INSTALL_DATE,
A.WORK_TYPE = B.WORK_TYPE,
A.CODE = B.CODE WHEN NOT MATCHED THEN
INSERT
(
BOOK_KEY,
INSTALL_DATE,
WORK_TYPE,
CODE
)
VALUES
(
B.BOOK_KEY,
B.INSTALL_DATE,
B.WORK_TYPE,
B.CODE
) ;
UPDATE 부분에서 ON에서 비교한 KEY 값을 제외하니 정상 동작하였다.
[Oracle] TABLE ANALYZE 하기 (0) | 2023.02.14 |
---|---|
[Oracle] mybatis에서 여러 row 한번에 merge 하기 (0) | 2022.08.10 |
[Oracle] ORA-00054: 리소스가 사용 중이어서 NOWAIT가 지정되었거나 시간 초과가 만료된 상태로 획득합니다. (1) | 2022.03.22 |
[Oracle] PLS-00215 문자열 길이 제약은 (1 .. 32767)범위이어야 합니다. (0) | 2022.03.22 |
댓글 영역