본문 바로가기
데이터베이스

PostgreSQL merge문

by so5663 2022. 9. 19.

 

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 실행