유일 키 충돌마다 "이미 접수됨"으로 답하면 안전해 보여요. 그런데 이 답 하나가 서로 다른 세 상황을 가려요.
서버 두 대가 PostgreSQL 18 테이블 하나를 같이 쓰고, 이 테이블의 요청 식별자에는 유일 제약이 걸려 있어요. 저장하는 건 그 식별자뿐이고, 충돌은 어느 서버에서든 날 수 있어요. 클라이언트가 타임아웃 뒤에 재시도해요. 재시도에는 바뀐 페이로드가 실려 올 수 있어요. 첫 시도가 타임아웃 전에 이미 외부 작업을 일으켰을 수도 있고요.
ON CONFLICT DO NOTHING은 두 번째 행이 들어가지 않게 막아요. 하는 일은 거기까지예요. 페이로드를 비교하지 않고, 외부 작업이 어떻게 됐는지도 알려 주지 않아요. Go 요청 컨텍스트를 취소했다고 원격 작업이 없었다는 뜻도 아니에요.
그러니 두 번째 서버에는 식별자보다 많은 정보가 필요해요. 같은 내용의 재시도, 같은 식별자에 바뀐 입력, 결과를 아직 아무도 모르는 작업을 서로 구분할 수 있어야 해요. 그 세 가지에 답할 수 있는 가장 작은 영속 기록을 찾고 싶어요.