
MySQL의 4가지 문법 중에서 TCL (Transaction Control Language)에 대해서 언급할 것을 기억하나요?!?
이번에는 드디어 데이터베이스에서 데이터 무결성과 안정성을 보장하기 위해 사용되는 트랜잭션(Transaction) 기능에 대해 다루겠습니다! 여러 SQL 문을 하나의 논리적인 작업 단위로 묶고, 작업의 성공 또는 실패 여부에 따라 전체를 반영하거나 취소할 수 있게 해줍니다.
다루는 주요 개념:
START TRANSACTIONCOMMITROLLBACK💡 모든 예시는
company_db의employees테이블을 기반으로 설명합니다.
트랜잭션은 하나 이상의 SQL 문을 하나의 작업 단위로 묶은 것입니다. 이 단위는 모두 성공하거나, 하나라도 실패하면 전체가 취소됩니다.
| 항목 | 설명 |
|---|---|
| 원자성 (Atomicity) | 모두 실행되거나 아무것도 실행되지 않아야 함 |
| 일관성 (Consistency) | 무결성 제약조건을 항상 만족해야 함 |
| 고립성 (Isolation) | 동시에 실행되는 트랜잭션이 서로 간섭하지 않아야 함 |
| 지속성 (Durability) | 커밋된 변경 사항은 영구적으로 저장되어야 함 |
START TRANSACTION + COMMIT — 트랜잭션 실행 및 확정START TRANSACTION;
UPDATE employees SET salary = salary + 500 WHERE emp_id = 1;
UPDATE employees SET salary = salary + 1000 WHERE emp_id = 2;
COMMIT;
COMMIT을 실행하면 두 쿼리의 변경 사항이 영구 반영됩니다.| emp_id | salary_before | salary_after |
|---|---|---|
| 1 | 6500.50 | 7000.50 |
| 2 | 5400.00 | 6400.00 |
ROLLBACK — 트랜잭션 전체 취소START TRANSACTION;
UPDATE employees SET salary = 0 WHERE emp_id = 3;
-- 오류 발생 또는 사용자 취소 시
ROLLBACK;
ROLLBACK이 실행되면서 변경 내용은 모두 취소됩니다.| emp_id | salary (변경 전후 동일) |
|---|---|
| 3 | 7100.00 |
| 명령어 | 설명 | 사용 시점 |
|---|---|---|
START TRANSACTION | 트랜잭션 시작 선언 | 트랜잭션 처리 시작 전 |
COMMIT | 모든 변경 사항을 실제 DB에 반영 | 작업이 정상적으로 완료됐을 때 |
ROLLBACK | 변경 사항을 모두 취소하고 이전 상태 복원 | 오류 발생 시, 수동 취소 시 |
다음 포스팅에서는 VIEW (가상 테이블) 에 대해 알아보겠습니다! 그럼 바이바이 🙋♀️