728x90
아래와 같은 구조의 테이블이 있다.
조회칼럼은 WHERE절, 선택칼럼은 SET절로 분류하려 하는데
WHERE과 SET절에 동시에 분류되는 것은 맞지 않아보인다. (가공이 된다면 다르다.)
PK칼럼은 WHERE절에 존재하고, SET절에서는 제외되는 것이 맞다.
![]() |
![]() |
![]() |
기본 UPDATE 쿼리
<update id="updateBasic" parameterType="mdata">
<![CDATA[
UPDATE CDM_CATEGORYDETAIL
SET COMN_CD1 = #{comnCd1} /* 공통코드1 */
, COMN_CD2 = #{comnCd2} /* 공통코드2 */
, COMN_CD3 = #{comnCd3} /* 공통코드3 */
, COMN_NM = #{comnNm} /* 공통코드명 */
, CD_EXPL = #{cdExpl} /* 코드설명 */
, CD_RNKN = #{cdRnkn} /* 코드순위 */
, RMRK = #{rmrk} /* 비고 */
, DEL_YN = #{delYn} /* 사용여부 */
, AMEN_ID = #{_loginId} /* 수정자ID:CDM_User.USID */
, UPDT_DT = SYSDATE /* 최종수정일시 */
, ENGL_NM = #{englNm} /* */
, LCL1_NM = #{lcl1Nm} /* */
, LCL2_NM = #{lcl2Nm} /* */
, LCL3_NM = #{lcl3Nm} /* */
WHERE CLSF_CD = #{clsfCd}
AND COMN_CD = #{comnCd}
]]>
</update>
PK값을 변경할 경우에는 ORIGINAL 값으로 사용한다.
orgClsfCd/orgComnCd 값을 찾아서, clsfCd/comnCd 값으로 바꾸겠다는 의미이다.
<update id="updateBasic" parameterType="mdata">
<![CDATA[
UPDATE CDM_CATEGORYDETAIL
SET CLSF_CD = #{clsfCd}
, COMN_CD = #{comnCd}
, COMN_CD1 = #{comnCd1} /* 공통코드1 */
, COMN_CD2 = #{comnCd2} /* 공통코드2 */
, COMN_CD3 = #{comnCd3} /* 공통코드3 */
, COMN_NM = #{comnNm} /* 공통코드명 */
, CD_EXPL = #{cdExpl} /* 코드설명 */
, CD_RNKN = #{cdRnkn} /* 코드순위 */
, RMRK = #{rmrk} /* 비고 */
, DEL_YN = #{delYn} /* 사용여부 */
, AMEN_ID = #{_loginId} /* 수정자ID:CDM_User.USID */
, UPDT_DT = SYSDATE /* 최종수정일시 */
, ENGL_NM = #{englNm} /* */
, LCL1_NM = #{lcl1Nm} /* */
, LCL2_NM = #{lcl2Nm} /* */
, LCL3_NM = #{lcl3Nm} /* */
WHERE CLSF_CD = #{orgClsfCd}
AND COMN_CD = #{orgComnCd}
]]>
</update>
WHERE절에 PK의 일부분만 있는 쿼리는 조심해야 한다.
원치않은 많은 DATA가 한 번에 변경될 수 있다.
<update id="updateBasic" parameterType="mdata">
<![CDATA[
UPDATE CDM_CATEGORYDETAIL
SET COMN_CD1 = #{comnCd1} /* 공통코드1 */
, COMN_CD2 = #{comnCd2} /* 공통코드2 */
, COMN_CD3 = #{comnCd3} /* 공통코드3 */
, COMN_NM = #{comnNm} /* 공통코드명 */
, CD_EXPL = #{cdExpl} /* 코드설명 */
, CD_RNKN = #{cdRnkn} /* 코드순위 */
, RMRK = #{rmrk} /* 비고 */
, DEL_YN = #{delYn} /* 사용여부 */
, AMEN_ID = #{_loginId} /* 수정자ID:CDM_User.USID */
, UPDT_DT = SYSDATE /* 최종수정일시 */
, ENGL_NM = #{englNm} /* */
, LCL1_NM = #{lcl1Nm} /* */
, LCL2_NM = #{lcl2Nm} /* */
, LCL3_NM = #{lcl3Nm} /* */
WHERE CLSF_CD = #{clsfCd}
]]>
</update>
'오라클' 카테고리의 다른 글
기간중복 확인 쿼리 (0) | 2022.12.22 |
---|---|
SqlGate SQL맞춤옵션 (0) | 2022.12.06 |
기간검색 (0) | 2022.10.26 |
java.sql.SQLException: ORA-01489: result of string concatenation is too long (0) | 2022.10.20 |
ORA-01438 SELECT문 오류 (0) | 2022.10.19 |