DB

upsert 로직 예시

행복 개발자 2021. 10. 2. 01:21
WITH upsert AS
(
UPDATE 
taxagent_schema.ftx_apply_wehago 
SET
smarta_company_name = #{smarta_company_name}
, server_keylock = #{server_keylock}
, client_keylock = #{client_keylock}
, taxagent_biz_no = #{taxagent_biz_no}
, suimcheo_biz_no = #{suimcheo_biz_no}
, random_key = #{random_key}
, session_id = #{session_id}::varchar
, apply_route = '1'
, session_timestamp = now()
WHERE
server_keylock = #{server_keylock}
AND
taxagent_biz_no = #{taxagent_biz_no}
AND
suimcheo_biz_no = #{suimcheo_biz_no}
RETURNING apply_no
)
INSERT INTO 
taxagent_schema.ftx_apply_wehago 
(
smarta_company_name
, server_keylock
, client_keylock
, taxagent_biz_no
, suimcheo_biz_no
, random_key
, session_id
, apply_route
, session_timestamp
)
SELECT
#{smarta_company_name}
, #{server_keylock}
, #{client_keylock}
, #{taxagent_biz_no}
, #{suimcheo_biz_no}
, #{random_key}
, #{session_id}::varchar
, '1'
, now()
WHERE NOT EXISTS
(SELECT * FROM upsert);