SQLD 기출문제 예상문제 64

다음 문제를 풀어보세요.

다음은 온라인 쇼핑몰의 주문 테이블과 상품 테이블에 대한 설명이다. 아래의 트랜잭션 격리 수준과 관련하여 발생할 수 있는 문제점을 모두 고르시오.

[테이블 구조]

CREATE TABLE ORDERS (
    ORDER_ID INT PRIMARY KEY,
    CUSTOMER_ID INT,
    PRODUCT_ID INT,
    ORDER_DATE DATE,
    QUANTITY INT
);

CREATE TABLE PRODUCTS (
    PRODUCT_ID INT PRIMARY KEY,
    PRODUCT_NAME VARCHAR(255),
    PRICE DECIMAL(10, 2),
    STOCK INT
);

[트랜잭션 시나리오]

  1. 사용자 A는 상품 X를 10개 주문한다.
  2. 트랜잭션 1: 사용자 A의 주문 정보를 ORDERS 테이블에 삽입한다. 동시에 상품 X의 재고를 PRODUCTS 테이블에서 10개 감소시킨다.
  3. 사용자 B는 상품 X를 5개 주문한다.
  4. 트랜잭션 2: 사용자 B의 주문 정보를 ORDERS 테이블에 삽입한다. 동시에 상품 X의 재고를 PRODUCTS 테이블에서 5개 감소시킨다.
  5. 두 트랜잭션은 동시에 수행될 수 있다.

[가정]

  • 트랜잭션 격리 수준은 READ COMMITTED이다.
  • 초기 상품 X의 재고는 20개이다.