바이브 코딩 시대의 데이터베이스7-3 COMMIT / ROLLBACK
테크타니 LEARN — 섹션 07 · 트랜잭션

COMMIT / ROLLBACK —
확정하거나 되돌리기

사진 편집 앱에서 밝기를 바꿨습니다. 화면으로 결과를 확인한 뒤 마음에 들면 저장하고, 잘못 바꿨다면 취소하죠. 데이터를 바꿀 때도 같은 선택을 할 수 있습니다 — 먼저 바꿔 보고, 확인한 뒤 결정하는 흐름입니다.

난이도보통소요8분준비물DBeaver + shop DB오늘직접 실행해봅니다

이번 섹션의 여정

7-1 트랜잭션의 본질

완료 ✓

→
7-2 언제 묶을까

완료 ✓

→
7-3 COMMIT / ROLLBACK

지금 여기

→
7-4 ~ 7-5

잠금 · 종합 실습

트랜잭션 시작하기

MySQL은 보통 자동 커밋 상태로 씁니다. 변경 SQL이 끝나면 결과가 바로 확정된다는 뜻이에요.

하지만 여러 작업을 확인한 뒤 직접 결정하고 싶을 때는 이렇게 시작합니다.

DBeaver — SQL 편집기
START TRANSACTION;
설정을 바꾸지 않아도 됩니다

자동 커밋 설정을 따로 끌 필요 없어요. START TRANSACTION 으로 시작한 작업은 COMMIT 이나 ROLLBACK 을 만날 때 끝납니다.

가격을 잠시 바꿔 봅니다

무선 이어폰(product_id = 9) 한 행으로 흐름을 확인해 볼게요. 가격을 1,000원 올린 뒤 바뀐 결과를 조회합니다.

DBeaver — SQL 편집기
START TRANSACTION;
 
UPDATE products
SET price = price + 1000
WHERE product_id = 9;
 
SELECT product_id, product_name, price
FROM products
WHERE product_id = 9;
조회 결과 — 아직 확정된 값이 아닙니다
product_idproduct_nameprice
9무선 이어폰90000
원래 89,000원이었던 가격이 90,000원으로 보입니다

지금 조회 결과가 바뀌었다고 해서 작업이 끝난 것은 아닙니다. 이 시점에 확인해야 할 것이 있어요.

확정하기 전에 확인할 것
① WHERE 조건이 정확한가 — 원한 행만 바뀌었는가?
② 바뀐 값이 의도한 값인가?
③ 몇 행이 바뀌었다고 나오는가?
UPDATE 에서 가장 위험한 실수

WHERE 를 빠뜨리면 테이블의 모든 행이 바뀝니다. UPDATE products SET price = price + 1000; 이라고만 쓰면 상품 30개 가격이 전부 오릅니다. 트랜잭션 안에서 작업하면 이런 실수를 되돌릴 수 있다는 게 오늘의 핵심이에요.

두 가지 끝 — COMMIT과 ROLLBACK

확인이 끝나면 둘 중 하나를 선택합니다.

트랜잭션을 끝내는 두 명령
명령뜻언제
COMMIT변경을 최종 확정한다결과가 맞을 때
ROLLBACK아직 확정하지 않은 변경을 취소한다실수했거나 조건이 맞지 않을 때
둘 중 하나를 실행하는 순간 이번 트랜잭션이 종료됩니다

가격을 정말 올리려던 상황이라면 COMMIT을 실행합니다. 그러면 90,000원이 최종 값으로 남아요.

하지만 오늘은 명령의 흐름을 확인하려고 잠시 바꾼 것이므로 ROLLBACK을 선택하겠습니다.

ROLLBACK 결과 확인하기

DBeaver — SQL 편집기
ROLLBACK;
 
SELECT product_id, product_name, price
FROM products
WHERE product_id = 9;
되돌아온 결과
product_idproduct_nameprice
9무선 이어폰89000
원래 값 89,000원으로 돌아왔습니다 — 실습 데이터는 그대로입니다
⭐ ROLLBACK 의 범위

롤백은 지금 트랜잭션에서 아직 커밋하지 않은 변경만 되돌립니다. 이미 커밋해 끝낸 과거 작업까지 되돌리는 명령이 아닙니다.

트랜잭션은 반드시 끝내세요

트랜잭션을 시작했다면 결과만 확인하고 그대로 두어서는 안 됩니다.

끝내지 않은 작업은 확정되지 않은 상태로 남고, 7-2에서 봤듯 다른 작업을 기다리게 만들 수도 있습니다.

오류가 났다고 자동으로 취소되지는 않습니다

SQL 한 줄에서 오류가 났다고 해서 앞의 변경까지 언제나 자동으로 취소되는 것은 아닙니다. 문제가 생겼다면 ROLLBACK 이 실제로 실행됐는지 확인하세요.

반드시 지킬 흐름
START TRANSACTION
↓
데이터 변경
↓
결과 확인
↓
정상 → COMMIT 문제 → ROLLBACK

한눈에 정리

명령하는 일
START TRANSACTION지금부터의 변경을 하나의 작업으로 묶는다
COMMIT변경을 최종 확정하고 트랜잭션을 끝낸다
ROLLBACK미확정 변경을 취소하고 트랜잭션을 끝낸다
되돌릴 수 있는 범위현재 트랜잭션의 커밋하지 않은 변경만
끝내지 않으면미확정 상태로 남아 다른 작업을 막을 수 있다

트랜잭션은 시작하고 → 변경하고 → 확인한 뒤 → 확정하거나 되돌리는 순서로 씁니다.

NEXT LESSON8-1 지식의 확장 — AI 시대에 데이터베이스를 배우는 법

7-4 잠금과 동시성, 7-5 종합 실습은 준비되는 대로 이어집니다. 먼저 마지막 섹션에서 배운 것을 계속 넓혀가는 방법을 보세요.

GO ▸ 8-1 보러가기