본문 바로가기
오라클

UPDATE문

by 구엽하늘 2022. 11. 16.
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