오라클 다중테이블 UPDATE에서 SET 키워드가 없다고 나옵니다.. 0 2 705

by 설계는어려워 [Oracle 기초] [2021.02.05 18:58:09]


테이블 두개를 업데이트 하고 싶어서 아래와 같은 방법으로 했었습니다.

UPDATE FL_PROJECT as PJT,
			   FL_PJT_CODE as PJC
		SET PJT.PJT_CLIENT =#{pjtClient},
			PJT.PJT_NM = #{pjtNm},
			PJT.PJT_EMP_LIST = #{pjtEmpList},
			PJT.PJT_PM = #{pjtPm},
			PJT.PJT_START_DATE = #{pjtStartDate},
			PJT.PJT_END_DATE =#{pjtEndDate},
			PJT.PJT_END_YN = #{pjtEndYn},
			PJT.PJT_ST_C = #{pjtStC},
			PJC.PJT_ST_C = #{pjtStC},
			PJC.PJT_DIV.C = #{pjtDivC},
			PJC.PJT_ORG_C = #{pjtOrgC}
		WHERE PJC.PJT_C = #{pjtC}

위 방법은 오라클에서 지원하지 않는 방식이라고 안되는 것 같습니다.

 

2번쨰로는

UPDATE FL_PJT_CODE PJC
			RIGHT JOIN FL_PROJECT PJT ON(PJT.#{pjtC} = PJC.#{pjtC})
		SET PJT.PJT_CLIENT =#{pjtClient},
			PJT.PJT_NM = #{pjtNm},
			PJT.PJT_EMP_LIST = #{pjtEmpList},
			PJT.PJT_PM = #{pjtPm},
			PJT.PJT_START_DATE = #{pjtStartDate},
			PJT.PJT_END_DATE =#{pjtEndDate},
			PJT.PJT_END_YN = #{pjtEndYn},
			PJT.PJT_ST_C = #{pjtStC},
			PJC.PJT_ST_C = #{pjtStC},
			PJC.PJT_DIV.C = #{pjtDivC},
			PJC.PJT_ORG_C = #{pjtOrgC}
		WHERE FL_PJT_CODE.PJT_C = #{pjtC}

 

위와같이 조인하면 된다는 글을 해봤는데 역시나 안됩니다.

 

어떻게 해야 테이블 두개를 동시에 업데이트를 할 수 있을까요? 오라클은 12c 쓰고 있습니다.

by pajama [2021.02.05 20:53:22]

MERGE문 쓰시면 될것 같네요~

MERGE INTO FL_PROJECT as PJT
   USING FL_PJT_CODE as PJC
   ON PJT.column = PJC.column
WHEN MATCHED THEN UPDATE
SET PJT.PJT_CLIENT =#{pjtClient},
    PJT.PJT_NM = #{pjtNm},
    ...

 


by 마농 [2021.02.06 08:17:49]

많이 이상합니다.
조인을 하는데 조인 조건도 없고?
다중테이블 동시 업데이트도 불가능 합니다.
http://gurubee.net/article/79308

UPDATE fl_project
   SET pjt_client     = #{pjtClient}
     , pjt_nm         = #{pjtNm}
     , pjt_emp_list   = #{pjtEmpList}
     , pjt_pm         = #{pjtPm}
     , pjt_start_date = #{pjtStartDate}
     , pjt_end_date   = #{pjtEndDate}
     , pjt_end_yn     = #{pjtEndYn}
     , pjt_st_c       = #{pjtStC}
 WHERE pjt_c          = #{pjtC}
;

UPDATE fl_pjt_code
   SET pjt_st_c  = #{pjtStC}
     , pjt_div.c = #{pjtDivC}
     , pjt_org_c = #{pjtOrgC}
 WHERE pjt_c     = #{pjtC}
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입