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
);
[트랜잭션 시나리오]
- 사용자 A는 상품 X를 10개 주문한다.
- 트랜잭션 1: 사용자 A의 주문 정보를 ORDERS 테이블에 삽입한다. 동시에 상품 X의 재고를 PRODUCTS 테이블에서 10개 감소시킨다.
- 사용자 B는 상품 X를 5개 주문한다.
- 트랜잭션 2: 사용자 B의 주문 정보를 ORDERS 테이블에 삽입한다. 동시에 상품 X의 재고를 PRODUCTS 테이블에서 5개 감소시킨다.
- 두 트랜잭션은 동시에 수행될 수 있다.
[가정]
- 트랜잭션 격리 수준은 READ COMMITTED이다.
- 초기 상품 X의 재고는 20개이다.