반응형
에러메시지
ORA-00957: 열명이 중복되었습니다
현상/원인
MERGE INTO T_MANAGER_INFO
USING DUAL
ON (CODE = #{code} AND IN_YN = 'Y' AND USER_SEQ = #{userSeq})
WHEN MATCHED THEN
UPDATE SET
USER_ID = #{userId, jdbcType=VARCHAR}
, NAME = #{name, jdbcType=VARCHAR}
, ORG_CD = #{orgCd, jdbcType=VARCHAR}
, USE_YN = #{useYn}
, REG_ID = #{insertSabun, jdbcType=VARCHAR}
, MDFR_NM = #{updateSabun, jdbcType=VARCHAR}
, REG_DATE = TO_DATE(#{insertDate},'YYYY-MM-DD HH24:MI:SS')
, MOD_DATE = TO_DATE(#{updateDate},'YYYY-MM-DD HH24:MI:SS')
WHEN NOT MATCHED THEN
INSERT(
SEQ
, USER_SEQ
, USER_ID
, NAME
, ORG_CD
, IN_YN
, CODE
, SYS_SEQ
, REG_ID
, MDFR_NM
, REG_DATE
, MOD_DATE
, USE_YN
, IN_YN
) VALUES (
SEQ_T_MANAGER_INFO.NEXTVAL
, #{userSeq}
, #{userId, jdbcType=VARCHAR}
, #{name, jdbcType=VARCHAR}
, #{orgCd, jdbcType=VARCHAR}
, 'Y'
, #{code}
, #{sysSeq}
, #{insertSabun, jdbcType=VARCHAR}
, #{updateSabun, jdbcType=VARCHAR}
, TO_DATE(#{insertDate},'YYYY-MM-DD HH24:MI:SS')
, TO_DATE(#{updateDate},'YYYY-MM-DD HH24:MI:SS')
, #{useYn}
, 'Y'
)
데이터를 inser update 하는 merge문을 작성했습니다.
당연히 되겠지 하고 테스트를 했는데 열명이 중복되었다고 에러가 뜹니다.
자세히 보면 in_yn이라는 칼럼을 insert 에 두개 작성된 것을 확인 할 수 있습니다.
이미 넣은 컬럼을 한번 더 정의하니 중복이라고 뜨는 것입니다.
해결
MERGE INTO T_MANAGER_INFO
USING DUAL
ON (CODE = #{code} AND IN_YN = 'Y' AND USER_SEQ = #{userSeq})
WHEN MATCHED THEN
UPDATE SET
USER_ID = #{userId, jdbcType=VARCHAR}
, NAME = #{name, jdbcType=VARCHAR}
, ORG_CD = #{orgCd, jdbcType=VARCHAR}
, USE_YN = #{useYn}
, REG_ID = #{insertSabun, jdbcType=VARCHAR}
, MDFR_NM = #{updateSabun, jdbcType=VARCHAR}
, REG_DATE = TO_DATE(#{insertDate},'YYYY-MM-DD HH24:MI:SS')
, MOD_DATE = TO_DATE(#{updateDate},'YYYY-MM-DD HH24:MI:SS')
WHEN NOT MATCHED THEN
INSERT(
SEQ
, USER_SEQ
, USER_ID
, NAME
, ORG_CD
, IN_YN
, CODE
, SYS_SEQ
, REG_ID
, MDFR_NM
, REG_DATE
, MOD_DATE
, USE_YN
) VALUES (
SEQ_T_MANAGER_INFO.NEXTVAL
, #{userSeq}
, #{userId, jdbcType=VARCHAR}
, #{name, jdbcType=VARCHAR}
, #{orgCd, jdbcType=VARCHAR}
, 'Y'
, #{code}
, #{sysSeq}
, #{insertSabun, jdbcType=VARCHAR}
, #{updateSabun, jdbcType=VARCHAR}
, TO_DATE(#{insertDate},'YYYY-MM-DD HH24:MI:SS')
, TO_DATE(#{updateDate},'YYYY-MM-DD HH24:MI:SS')
, #{useYn}
)
중복되는 컬럼을 지워주고 실행하니 잘 들어갑니다.
반응형
댓글