DBMS/PostgreSQL
[ PostgreSQL ] 데이터가 있으면 update, 데이터가 없으면 insert (upsert)
seulye
2022. 11. 2. 11:16
https://mine-it-record.tistory.com/342
[PostgreSQL] 데이터 있으면 UPDATE 없으면 INSERT (INSERT INTO ~ ON CONFLICT DO UPDATE)
PostgreSQL에서 사용하는 upsert구문에 대해 알아보자. 오라클에서는 merge into, mysql에서는 on duplicate on key update를 사용하며 이와 비슷하게 PostgreSQL에서는 insert into ~ on conflict do update 구문을 사용한다.
mine-it-record.tistory.com
insert into
user (
user_id
,user_name
,phone_number
)
values (
#{userId}
,#{userName}
,#{phoneNumber}) ON
CONFLICT (user_id) DO
UPDATE
SET
userid = #{userId},
,user_name = #{userName}
,phone_number = #{phoneNumber}
(코드 정렬이 왜 이런식으로 된지는 모르겠다..; mybatis xml 형식인데.. )
user : 유저 정보에 대한 테이블
user_id는 primary key이다.
이미 유저 정보가 있는 경우에 user_id도 있을 거고, 이미 있는 user_id로 insert하려고 한다면 실패할 것이다.
그렇게 되면 DO 뒤에 있는 명령을 실행하게 된다.
나는 update를 해보았다. 그냥 update문이랑 똑같이 쓰면 됨!
DO NOTHING을 하면 그냥 그 오류를 무시함.