inblog logo
|
DailyCoding
    SQLD

    2-3-2. TCL

    박은서's avatar
    박은서
    Mar 02, 2026
    2-3-2. TCL
    Contents
    1. COMMIT1️⃣ 트랜잭션의 기초 개념2️⃣ COMMIT2. ROLLBACK1️⃣ ROLLBACK의 기초 개념3. SAVEPOINT1️⃣ SAVEPOINT의 기초 개념
    💡
    TCL (트랜잭션 제어어 : Transaction Control Language)

    1. COMMIT

    1️⃣ 트랜잭션의 기초 개념

    1) 트랜잭션

    • 데이터베이스 내에서 실행되는 하나의 논리적인 작업 단위
    • 여러 개의 연산을 포함할 수 있음
    • 데이터베이스의 응용프로그램들은 수많은 트랜잭션의 집합체

    2) 트랜잭션 명령어

    • COMMIT 명령어
      • 데이터를 데이터베이스에 저장
    • ROLLBACK 명령어
      • 데이터의 상태를 이전으로 되돌림
    • SAVEPOINT 명령어
      • 트랜잭션의 일부만 취소

    3) 트랜잭션 ACID 속성

    • 원자성(Atomicity)
      • 데이터베이스의 일관성을 유지하는 핵심 메커니즘
      • 모든 연산이 성공적으로 완료되거나 아무것도 실행되지 않은 상태 유지
    • 일관성(Consistency)
      • 트랜잭션은 데이터베이스의 일관성을 유지해야 함
    • 고립성(Isolation)
      • 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행되어야 함
    • 지속성(Durability)
      • 성공적으로 수행된 트랜잭션의 결과는 시스템 오류가 발생해도 유지해야 함

    2️⃣ COMMIT

    1) COMMIT

    • COMMIT을 실행 → 트랜잭션 종료 / 해당 트랜잭션에서 이루어진 모든 변경 사항이 데이터베이스에 영구적으로 저장됨
    • 다른 트랜잭션이나 사용자는 COMMIT이 완료된 데이터만 볼 수 있음
    • COMMIT 이후에는 해당 트랜잭션에 대한 ROLLBACK 불가능
    • COMMIT 이후 데이터 복구가 매우 어렵지만, 몇 가지 방법을 통해 일부 복구 작업 가능

    2) 오토커밋(Auto-commit)

    • 일부 데이터베이스 시스템에서는 SQL 문이 실행될 때마다 자동으로 COMMIT을 수행하는 자동 커밋 모드 사용 가능
    • 오토커밋 활성화된 경우, 각 SQL 문이 실행될 때마다 트랜잭션 자동 종료

    3) COMMIT 예

    // 1. EMP_MNG 테이블의 YONGMOON, YONGMMON2 삭제 DELETE FROM EMP WHERE ENAME = 'YONGMOON' OR ENAME = 'YONGMOON2'; // 2. 새로운 직원을 EMP 테이블에 추가 INSERT INTO EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO) VALUES (7935, 'JAMESBOND', 'ANALYST', 7566, TO_DATE('2023-08-19', 'YYYY-MM-DD'), 3500, NULL, 20); // 3. 특정 직원의 급여를 10% 인상 (EMPNO가 7935인 'JAMESBOND') UPDATE EMP SET SAL = SAL * 1.1 WHERE EMPNO = 7935; // 4. 특정 직원의 부서 번호를 30번으로 변경 (EMPNO가 7902인 FORD) UPDATE EMP SET DEPTNO = 30 WHERE EMPNO = 7902; // 5. 모든 변경 사항을 확정 COMMIT;

    2. ROLLBACK

    1️⃣ ROLLBACK의 기초 개념

    1) ROLLBACK

    • 데이터베이스 트랜잭션에서 이루어진 모든 변경 사항을 취소하고, 트랜잭션이 시작된 시점으로 되돌리는 명령어
    • 트랜잭션 중간에 사용될 수 있으며, COMMIT 이전의 모든 작업 되돌림
    • 특정 지점까지 되돌릴 수 있음
      • SAVEPOINT 설정하고, ROLLBACK TO SAVEPOINT 사용하여 트랜잭션 일부분만 취소 가능

    2) ROLLBACK 예

    // 1. 특정 직원의 급여를 40% 인상 (EMPNO가 7935인 'JAMESBOND') UPDATE EMP SET SAL = SAL * 1.4 WHERE EMPNO = 7935; // 2. 특정 직원의 부서 번호를 30번으로 변경 (EMPNO가 7935인 'JAMESBOND') UPDATE EMP SET DEPTNO = 30 WHERE EMPNO = 7935; // 3. 모든 변경 사항을 취소 ROLLBACK;

    3. SAVEPOINT

    1️⃣ SAVEPOINT의 기초 개념

    1) SAVEPOINT

    • 트랜잭션 내에서 트정 지점을 설정하여 그 지점까지의 작업을 안전하게 저장해두고, 이후에 문제가 발생하면 해당 지점으로 롤백할 수 있도록 하는 기능
    • 트랜잭션을 여러 단계로 나누어 관리할 수 있어, 필요한 경우 트랜잭션 전체를 취소하지 않고 특정 시점 이후의 작업만 취소할 수 있음
    • ROLLBACK TO savepoint_name 구문
      • 지정된 SAVEPOINT 이후에 수행된 모든 작업을 취소
      • SQVEPOINT 이전의 작업은 취소되지 않고 그대로 유지
    • 트랜잭션 내에서 여러 개의 SAVEPOINT 설정 가능
    • COMMIT 실행하면 트랜잭션 내의 모든 작업이 확정되며, 모든 SAVEPOINT는 삭제됨
    • ROLLBACK 실행하면 트랜잭션 전체 취소되며, 모든 SAVEPOINT는 삭제됨

    2) SAVEPOINT 예

    // 트랜잭션 시작 BEGIN; // 1. 첫 번째 INSERT INSERT INTO EMP (EMPNO, ENAME, JOB, SAL, DEPTNO) VALUES (8001, 'AAAAA', 'CLERK', 1500, 10); // 2. 첫 번째 SAVEPOINT 설정 SAVEPOINT sp1; // 3. 두 번째 INSERT INSERT INTO EMP (EMPNO, ENAME, JOB, SAL, DEPTNO) VALUES (8002, 'BBBBB', 'MANAGER', 2500, 20); // 4. 두 번째 SAVEPOINT 설정 SAVEPOINT sp2; // 5. 세 번째 INSERT INSERT INTO EMP (EMPNO, ENAME, JOB, SAL, DEPTNO) VALUES (8003, 'CCCCC', 'ANALYST', 3000, 30); // 6. 오류 발생으로 인해 두 번째 SAVEPOINT로 롤백 ROLLBACK TO sp2; // 7. COMMIT 실행으로 나머지 트랜잭션 확정 COMMIT;
     
    Share article
    Contents
    1. COMMIT1️⃣ 트랜잭션의 기초 개념2️⃣ COMMIT2. ROLLBACK1️⃣ ROLLBACK의 기초 개념3. SAVEPOINT1️⃣ SAVEPOINT의 기초 개념

    DailyCoding

    RSS·Powered by Inblog