데이터베이스/PostgreSQL
PostgreSQL UPSERT 하는 법
ddss6565
2021. 6. 5. 09:10
버전 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)
반응형