PostgreSQL
ON CONFLICT (id)ON CONFLICT
DO UPDATE SET ...
RETURNING id
충돌 대상을 명시하고, 삽입하려던 값은 EXCLUDED로 참조합니다.
UPSERT는 편리하지만 UNIQUE 제약, 동시성, 중복 매칭 조건을 정확히 잡아야 안전합니다.
충돌 대상을 명시하고, 삽입하려던 값은 EXCLUDED로 참조합니다.
모든 PRIMARY/UNIQUE 충돌이 대상이므로 제약이 여러 개면 의도를 확인합니다.
소스가 같은 대상 행에 여러 번 매칭되지 않게 보장해야 합니다.
생성 키와 DEFAULT 값 확인 문법도 DBMS마다 다릅니다.
PK/UNIQUE 중 어떤 제약이 충돌을 일으키는지 명확히 봅니다.
같은 키를 동시에 쓰는 요청은 잠금과 격리 수준을 확인합니다.
생성 ID가 필요하면 INSERT 직후 조회보다 반환 문법을 우선 검토합니다.