영수증 받기
대부분 SQL DB 가 INSERT/UPDATE/DELETE 를 fire-and-forget 으로 돌림. PostgreSQL 의 RETURNING 이 그것들을 데이터 반환하는 연산으로 바꿈 — 영향받은 행이 SELECT 한 것처럼 돌아옴.
이게 왜 중요
고전 대안은 'INSERT, 그 다음 SELECT 로 새 ID 가져오기'. 라운드트립 두 번 + insert 와 select 사이 race condition. RETURNING 이 한 statement 에 둘 다 atomic. 레이턴시 반감, race 제거.
Atomic chain 위해 CTE 와 결합
DELETE ... RETURNING 을 CTE 안에 감싸고 결과를 다른 데 INSERT — 한 statement 에 'A 에서 삭제 + B 로 복사' atomic.