PostgreSQL은 mysql랑 다르게 UPLICATE KEY UPDATE 가없기 때문에
with문으로 직접 구현해야 한다.
with upsert as
(
update tb_user set
reg_userno = #{user_no}
,upd_date = to_char(now(),'YYYYMMDDHH24MISS')
where
id = #{id}
and reg_userno = #{reg_userno}
returning *
)
INSERT into tb_user (
id
,reg_userno
,reg_date
)
select
#{id}
,#{reg_userno}
,to_char(now(),'YYYYMMDDHH24MISS')
where not exists(select * from upsert); -- with문에서 조회되지 않아야 insert 실행
'데이터베이스' 카테고리의 다른 글
데이터베이스별 랜덤으로 레코드 가져오기 쿼리 정리 (0) | 2022.11.09 |
---|---|
[MySql] 효과적인 인덱스 설계 (0) | 2022.11.07 |
PostgreSQL 배열 함수 array_agg, array_to_string, unnest, array_append (0) | 2022.11.04 |
Postgresql With Recursive, UNION ALL 사용한 계층형 쿼리 (0) | 2022.09.22 |
[MySQL] group_concat 사용하기 (멀티행을 싱글행으로) (0) | 2022.03.15 |