반응형
안녕하세요. 오늘은 PostgreSQL에 UPSERT ON CONFLICT 구문의 DO NOTHING에 대해 알아보겠습니다.
ON CONFLICT 구문은 PostgreSQL 9.5버전 이상에서만 사용 가능합니다.
ON CONFLICT 구문에 옵션은 2가지가 있습니다.
1. DO NOTHING : 특정 컬럼과 데이터가 겹치면 아무런 동작을 하지 않습니다.
2. DO UPDATE SET : 특정 컬럼과 데이터가 겹치면 UPDATE를 합니다.
ON CONFLICT 구문 DO NOTHING 예시 및 설명
INSERT INTO MEMBER
(SEQ
, ID
, NAME
, AGE
, SEX_CD
, CREATE_DATE
, UPDATE_DATE)
VALUES
(1
, 'a'
, '홍길동'
, 32
, '1'
, now()
, now());
지금 MEMBER 테이블에 SEQ가 1인 데이터가 존재하고있습니다. 이 경우 위에 쿼리문을 실행 할 경우 에러가납니다.
여기서 ON CONFLICT 구문에 DO NOTHING 옵션을 사용하면 아무런 동작을 하지 않습니다.
INSERT INTO MEMBER
(SEQ
, ID
, NAME
, AGE
, SEX_CD
, CREATE_DATE
, UPDATE_DATE)
VALUES
(1
, 'a'
, '홍길동'
, 32
, '1'
, now()
, now())
ON CONFLICT (SEQ)
DO NOTHING;
위 쿼리를 실행해서 결과를 보면 Updated Rows 가 0인 결과를 볼 수 있습니다.
에러 없이 아무런 동작을 하지 않았습니다.
PK를 따로 체크해서 데이터를 insert 해야 할 경우
PostgreSQL에 ON CONFLICT 구문의 DO NOTHING 옵션을 사용 하면 좋을 것 같습니다.
PostgreSQL에 ON CONFLICT 구문의 DO UPDATE SET옵션은 더 알아봐야 할 것 같습니다.
이상 PostgreSQL에 UPSERT ON CONFLICT 구문의 DO NOTHING에 대해 알아보았습니다.
반응형
'개발 > PostgreSQL' 카테고리의 다른 글
PostgreSQL pgAdmin 4를 이용한 local server 만들기 (23) | 2024.03.29 |
---|---|
PostgreSQL insert, update, delete 사용법 및 예시 (74) | 2023.02.17 |
PostgreSQL 테이블 생성 create 문법 및 사용법, 예시 (58) | 2023.02.16 |
PostgreSQL 데이터 타입(Data Type) 종류 (44) | 2023.02.10 |
PostgreSQL 윈도우(WINDOW)에 설치하기 (59) | 2023.02.09 |