본문 바로가기
C.W.K.
Stream
Lesson 06 of 16 · published

RETURNING, 쓰기 결과를 바로 받기

~10 min · queries, write

Level 0스키마 새싹
0 XP0/86 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

바꾼 행이 곧 결과가 돼

PostgreSQL의 RETURNING은 INSERT, UPDATE, DELETE가 영향을 준 행을 SELECT 결과처럼 돌려줘. 자동 생성된 기본 키와 기본값, 트리거가 바꾼 값까지 한 왕복으로 받을 수 있어.

다시 찾는 질의를 없애

행을 넣은 뒤 별도 SELECT로 찾으면 왕복이 늘고 그 사이 다른 변경이 끼어들 수 있어. 쓰기 문장 자체에서 결과를 받으면 방금 처리한 바로 그 행이라는 보장이 생겨. 여러 행을 바꿀 때도 영향받은 집합을 그대로 확인할 수 있어.

Code

INSERT/UPDATE/DELETE와 RETURNING·sql
INSERT INTO users (name, email)
VALUES ('Alice', 'alice@example.com')
RETURNING id, created_at;

UPDATE products SET price = price * 0.9 WHERE category = 'clearance'
RETURNING id, name, price AS new_price;

DELETE FROM sessions WHERE expires_at < now()
RETURNING id, user_id, expires_at;
CTE로 삭제와 보관을 원자적으로 처리하기·sql
WITH archived AS (
  DELETE FROM orders
  WHERE status = 'cancelled'
    AND placed_at < now() - INTERVAL '1 year'
  RETURNING *
)
INSERT INTO orders_archive
SELECT * FROM archived;

External links

Exercise

코드에서 INSERT 뒤에 ID를 얻으려고 SELECT를 다시 실행하는 패턴을 찾아 INSERT ... RETURNING 한 문장으로 바꿔. 왕복 횟수와 지연 시간이 얼마나 줄었는지 측정해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.