재고 확인
주문 상품의 현재 재고가 요청 수량 이상인지 확인한다.
lock 대상주문 생성은 여러 테이블을 함께 바꾸므로 중간 실패가 남지 않아야 한다. 재고 차감과 주문 상세 저장을 하나의 단위로 본다.
주문 상품의 현재 재고가 요청 수량 이상인지 확인한다.
lock 대상orders에 주문 헤더를 만들고 생성 키를 확보한다.
order_idorder_items에 상품, 수량, 단가를 기록한다.
line itemsproducts.stock을 주문 수량만큼 줄인다.
UPDATE총액과 재고가 맞으면 커밋하고 실패하면 롤백한다.
atomicUPDATE products
SET stock = stock - :qty
WHERE product_id = :product_id
AND stock >= :qty;
-- 영향 행 수가 1인지 확인한다