일관성 시나리오

주문 처리 트랜잭션 실습

주문 생성은 여러 테이블을 함께 바꾸므로 중간 실패가 남지 않아야 한다. 재고 차감과 주문 상세 저장을 하나의 단위로 본다.

01

재고 확인

주문 상품의 현재 재고가 요청 수량 이상인지 확인한다.

lock 대상
02

주문 생성

orders에 주문 헤더를 만들고 생성 키를 확보한다.

order_id
03

상세 입력

order_items에 상품, 수량, 단가를 기록한다.

line items
04

재고 차감

products.stock을 주문 수량만큼 줄인다.

UPDATE
05

검증 커밋

총액과 재고가 맞으면 커밋하고 실패하면 롤백한다.

atomic

재고 음수 방지 조건

UPDATE products
SET stock = stock - :qty
WHERE product_id = :product_id
  AND stock >= :qty;
-- 영향 행 수가 1인지 확인한다