버전 9.5 이상
대상 컬럼 집합은 PK 또는 Unique Key
INSERT INTO USERS (user_id, user_nm)
VALUES ('0001', '홍길동')
ON CONFLICT(user_id, user_nm)
DO NOTHING;
INSERT INTO USERS (USER_ID, USER_NAME)
VALUES ('0001', '세종대왕')
ON CONFLICT (USER_ID)
DO UPDATE
SET USER_NAME = EXCLUDED.USER_NAME;
버전 9.5 이하, 키가 없을 때
WITH UPSERT AS
(
UPDATE USERS
SET USER_NAME = '세종대왕'
WHERE USER_ID = '0001'
RETURNING *
)
INSERT INTO USERS (USER_ID, USER_NAME)
VALUES ('0001', '세종대왕')
WHERE NOT EXISTS (SELECT * FROM UPSERT)
반응형
'데이터베이스 > PostgreSQL' 카테고리의 다른 글
PostgreSQL 특정 컬럼에서 LIMIT 1 (0) | 2023.07.18 |
---|---|
PostgreSQL RECURSIVE 사용 (재귀 쿼리) (0) | 2023.07.18 |
PostgreSQL 확장 플러그인 설치 여부 (0) | 2023.07.18 |
PostgreSQL 버전 확인 (0) | 2023.07.18 |
PostgreSQL UUID 생성 (0) | 2023.07.18 |
댓글