마니의 공부방/Java

[myBatis] update 와 함께 insert 하기

update와 동시에 insert를?

사실 저는 잘 사용하지 않는 방법이긴한데.. update와 동시에 insert를 사용하시는 분들이 계실까하여 ... 

사실 with ~ as 구문을 통합방법은 조합하기 나름이라 insert전에 with~as를 통해 select하는 등으로도 종종 사용하긴 하는것 같습니다.

 

어지간하면 나누어서 쓰는게 좋다보지만..

저는 update와 insert는 별개로 봐서 어지간해서는 각각 update와 insert를 나누어 작업하는 쪽에 속합니다.

<update id="jobUpdateInsert" parameterType="map">
	WITH jobUpdate AS (
	UPDATE CAM
	SET
      CAM_ID = #{camId}
	  ,JOB_STATUS = #{jobStatus}
	  ,JOB_DATETIME = NOW()
	WHERE CAM_ID = #{camId}
	RETURNING *)

	INSERT INTO
	  CAM_JOB_HISTORY(CAM_ID, JOB_STATUS, JOB_DATETIME)
	SELECT
	  #{camId}
	  ,#{jobStatus}
	  ,NOW()
	WHERE NOT EXISTS (SELECT * FROM jobUpdate)
</update>