MySQL TCL (Transaction Control Language) 실습!

하하호호훈이·2025년 5월 30일

SQL(MySQL) MUST KNOW

목록 보기
16/23
post-thumbnail

MySQL의 4가지 문법 중에서 TCL (Transaction Control Language)에 대해서 언급할 것을 기억하나요?!?

이번에는 드디어 데이터베이스에서 데이터 무결성과 안정성을 보장하기 위해 사용되는 트랜잭션(Transaction) 기능에 대해 다루겠습니다! 여러 SQL 문을 하나의 논리적인 작업 단위로 묶고, 작업의 성공 또는 실패 여부에 따라 전체를 반영하거나 취소할 수 있게 해줍니다.

다루는 주요 개념:

  • START TRANSACTION
  • COMMIT
  • ROLLBACK

💡 모든 예시는 company_dbemployees 테이블을 기반으로 설명합니다.


✅ 트랜잭션이란?

트랜잭션은 하나 이상의 SQL 문을 하나의 작업 단위로 묶은 것입니다. 이 단위는 모두 성공하거나, 하나라도 실패하면 전체가 취소됩니다.

트랜잭션의 4가지 성질 (ACID)

항목설명
원자성 (Atomicity)모두 실행되거나 아무것도 실행되지 않아야 함
일관성 (Consistency)무결성 제약조건을 항상 만족해야 함
고립성 (Isolation)동시에 실행되는 트랜잭션이 서로 간섭하지 않아야 함
지속성 (Durability)커밋된 변경 사항은 영구적으로 저장되어야 함

1. 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_idsalary_beforesalary_after
16500.507000.50
25400.006400.00

2. ROLLBACK — 트랜잭션 전체 취소

✔️ 예제

START TRANSACTION;

UPDATE employees SET salary = 0 WHERE emp_id = 3;
-- 오류 발생 또는 사용자 취소 시
ROLLBACK;

동작 설명:

  • 급여를 0으로 설정했지만, ROLLBACK이 실행되면서 변경 내용은 모두 취소됩니다.

예시 결과:

emp_idsalary (변경 전후 동일)
37100.00

✅ 정리 요약: 트랜잭션 명령어 비교

명령어설명사용 시점
START TRANSACTION트랜잭션 시작 선언트랜잭션 처리 시작 전
COMMIT모든 변경 사항을 실제 DB에 반영작업이 정상적으로 완료됐을 때
ROLLBACK변경 사항을 모두 취소하고 이전 상태 복원오류 발생 시, 수동 취소 시

다음 포스팅에서는 VIEW (가상 테이블) 에 대해 알아보겠습니다! 그럼 바이바이 🙋‍♀️

profile
AI, Data Science/Analysis 리뷰용가리지용 😆

0개의 댓글