<update id="savePediaPrepareTBL" parameterType="hashmap">
<selectKey keyProperty="hmgpediaId" resultType="string" order="BEFORE">
SELECT PEDIA_PREPARE_ID as hmgpediaId
, ROWNUM AS RNUM
FROM (
SELECT A.PEDIA_PREPARE_ID
FROM HMG.TB_PEDIA_PREPARE A
ORDER BY CREATE_DATE DESC
)
WHERE rownum = 1;
</selectKey>
MERGE INTO HMG.TB_HMGPEDIA_TBL A
USING DUAL ON (A.HMGPEDIA_ID = #{hmgpediaId} AND A.LANG_CD = #{langCd})
WHEN MATCHED THEN
UPDATE SET
SORT_NO = #{sortNo}
, USE_YN = #{useYn}
, DEL_YN = #{delYn}
, TBL_TITLE = #{tblTitle}
, TBL_CONTENTS = #{tblContents}
, UPDATE_USER = #{__param.userId}
, UPDATE_DATE = CURRENT_TIMESTAMP
WHEN NOT MATCHED THEN
INSERT (
HMGPEDIA_ID
, LANG_CD
, SORT_NO
, USE_YN
, DEL_YN
, TBL_TITLE
, TBL_CONTENTS
, CREATE_USER
, CREATE_DATE
, UPDATE_USER
, UPDATE_DATE
) VALUES (
#{hmgpediaId}
, #{langCd}
, #{sortNo}
, #{useYn}
, #{delYn}
, #{tblTitle}
, #{tblContents}
, #{__param.userId}
, CURRENT_TIMESTAMP
, #{__param.userId}
, CURRENT_TIMESTAMP
)
</update>
위 쿼리에서 어떤게 잘못됐는지 도저히 알수가 없어서
여기에 질문올립니다 ㅠㅠ
위 쿼리에서 selectKey부분에서 잘못된부분이 있을까요?
고수님들 도움부탁드립니다 ㅠ
별도 selectKey 를 이용하지 말고 직접 머지하는건 어떤가요?
MERGE INTO hmg.tb_hmgpedia_tbl a USING ( SELECT pedia_prepare_id AS hmgpedia_id , #{langCd} AS lang_cd , #{sortNo} AS sort_no , #{useYn} AS use_yn , #{delYn} AS del_yn , #{tblTitle} AS tbl_title , #{tblContents} AS tbl_contents , #{__param.userId} AS user_id FROM (SELECT pedia_prepare_id FROM hmg.tb_pedia_prepare ORDER BY create_date DESC ) WHERE ROWNUM = 1 ) b ON (a.hmgpedia_id = b.hmgpedia_id AND a.lang_cd = b.lang_cd) WHEN MATCHED THEN UPDATE SET sort_no = b.sort_no , use_yn = b.use_yn , del_yn = b.del_yn , tbl_title = b.tbl_title , tbl_contents = b.tbl_contents , update_user = b.user_id , update_date = CURRENT_TIMESTAMP WHEN NOT MATCHED THEN INSERT ( hmgpedia_id , lang_cd , sort_no , use_yn , del_yn , tbl_title , tbl_contents , update_user , update_date , create_user , create_date ) VALUES ( b.hmgpedia_id , b.lang_cd , b.sort_no , b.use_yn , b.del_yn , b.tbl_title , b.tbl_contents , b.user_id , CURRENT_TIMESTAMP , b.user_id , CURRENT_TIMESTAMP ) ;