상세 컨텐츠

본문 제목

ORA-38104: Columns referenced in the ON Clause cannot be updated

개발/Database

by 대충고양이짤 2013. 12. 18. 16:32

본문

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}



참고 사이트




관련글 더보기

댓글 영역