Search

9-2-5. 사라진 500원

-- [SQL-9-2-5-a] A 세션 -- A 세션 -- 1. ACC1의 잔액 5,000원으로 초기화 UPDATE startdbpg.ms_acc t1 SET bal_amt = 5000 WHERE t1.acc_no = 'ACC1'; -- 2. A 세션 명시적 트랜잭션 시작 BEGIN; -- 4. ACC1 잔액 조회(5,000원) SELECT t1.bal_amt FROM startdbpg.ms_acc t1 WHERE t1.acc_no = 'ACC1'; -- 6. ACC1에서 500원 출금 UPDATE startdbpg.ms_acc t1 SET bal_amt = bal_amt-500 WHERE t1.acc_no = 'ACC1'; -- 8. ACC1 잔액 조회(4,500원) SELECT t1.bal_amt FROM startdbpg.ms_acc t1 WHERE t1.acc_no = 'ACC1'; -- 9. 변경된 데이터 반영 COMMIT;
SQL
복사
-- [SQL-9-2-5-a] B 세션 -- B 세션 -- 3. B 세션 명시적 트랜잭션 시작 BEGIN; -- 5. ACC1 잔액 조회(5,000원) SELECT t1.bal_amt FROM startdbpg.ms_acc t1 WHERE t1.acc_no = 'ACC1'; -- 7. ACC1에서 500원 출금 -- A 세션이 커밋할 때까지 대기에 빠짐 UPDATE startdbpg.ms_acc t1 SET bal_amt = bal_amt-500 WHERE t1.acc_no = 'ACC1'; -- 10. ACC1 잔액 조회(4,000원) -- B 세션에서 이전에 조회한 잔액은 5,000원 -- B 세션에서 500원만 출금했는데 잔액이 4,000원 SELECT t1.bal_amt FROM startdbpg.ms_acc t1 WHERE t1.acc_no = 'ACC1'; -- 11. 변경된 데이터 반영 COMMIT;
SQL
복사