ORA-38104: Columns referenced in the ON Clause cannot be updated
문제 상황
MERGE INTO를 사용하여 UPDATE 시 위와 같은 에러가 발생하였다.
문제 원인
MERGE INTO (~~) USING (~~) ON (~~) 구문 사용 시, ON에서 사용한 컬럼을 UPDATE 할 수 없다.
문제 해결
에러가 발생하는 조건문은 ON에서 사용하지 말고 UPDATE의 WHERE 문에서 사용한다.
에러코드
MERGE INTO WORK_TABLE A USING (SELECT TEST_ID FROM STATE_TABLE) B ON (A.TEST_ID = B.TEST_ID AND A.TASK_ID = #{testId} AND A.STATE <= #{condition})
WHEN MATCHED THEN UPDATE SET A.STATE = #{state},
A.CODE = #{code},
A.DATE = SYSDATE
수정코드
MERGE INTO WORK_TABLE A USING (SELECT TEST_ID FROM STATE_TABLE) B ON (A.TEST_ID = B.TEST_ID AND A.TASK_ID = #{testId}) WHEN MATCHED THEN UPDATE SET A.STATE = #{state}, A.CODE = #{code}, A.DATE = SYSDATE WHERE A.STATE <= #{condition}
참고 사이트
[MyBatis] PersistenceException 에러 (0) | 2015.06.15 |
---|---|
[Oracle] DEFAULT ON NULL (0) | 2014.01.21 |
ORA-00918: 열의 정의가 애매합니다 (0) | 2013.12.16 |
[Oracle][ORA-02067] 트랜잭션 또는 저장점 롤백이 요구됩니다, 등 (0) | 2013.11.14 |
[Oracle] 다른 DB에 있는 테이블 값 쓰기 (DB Link) (0) | 2013.11.14 |
댓글 영역