728x90
데이터베이스에서 트랜잭션을 제어하는 명령어로, 트랜잭션의 상태를 최종 확정하거나 취소하는 역할
1. Commit
- 개념: 트랜잭션이 성공적으로 완료된 후, 데이터베이스에 변경 사항을 영구적으로 반영하는 명령어입니다.
- 특징:
- Commit을 실행하면 트랜잭션 내에서 이루어진 모든 변경 사항이 데이터베이스에 저장됩니다.
- Commit 이후에는 데이터가 확정되어 Rollback으로 되돌릴 수 없습니다.
- 주로 트랜잭션이 성공적으로 완료되었을 때 사용하며, 다른 사용자도 Commit된 데이터를 조회할 수 있게 됩니다.
- 예시:
BEGIN;
INSERT INTO 직원 (이름, 나이, 부서ID)
VALUES ('홍길동', 30, 1);
UPDATE 직원
SET 급여 = 급여 * 1.1
WHERE 부서ID = 1;
COMMIT;
2. Rollback
- 개념: 트랜잭션 내에서 발생한 모든 변경 사항을 취소하고 원래 상태로 되돌리는 명령어입니다.
- 특징:
- Rollback을 실행하면 해당 트랜잭션에서 수행된 모든 작업이 무효화되어 데이터베이스가 이전 상태로 돌아갑니다.
- Commit되지 않은 상태에서만 사용할 수 있으며, 트랜잭션 중 오류가 발생하거나 작업을 취소할 필요가 있을 때 사용합니다.
- Rollback을 통해 데이터 무결성을 유지하고, 예상하지 못한 데이터 변경을 방지할 수 있습니다.
- 예시:
BEGIN;
INSERT INTO 직원 (이름, 나이, 부서ID) VALUES ('홍길동', 30, 1);
UPDATE 직원 SET 급여 = 급여 * 1.1 WHERE 부서ID = 1;
ROLLBACK;
Commit과 Rollback의 차이점
Commit/Rollback
역할 | 트랜잭션의 변경 사항을 영구적으로 반영 | 트랜잭션의 변경 사항을 취소하고 원래 상태로 복구 |
변경 반영 | 데이터베이스에 확정되어 다른 사용자에게 반영됨 | 변경 사항이 취소되며, 데이터는 초기 상태로 복구 |
재실행 가능 여부 | 되돌릴 수 없으며, Rollback 불가 | Commit 전이라면 언제든지 실행 가능 |
사용 시기 | 트랜잭션이 성공적으로 완료된 후 | 트랜잭션 오류 발생 시 또는 작업을 취소할 때 |
Commit과 Rollback의 사용 예시
- Commit 사용 예시
- 은행 거래 시스템에서 계좌 간 자금 이체가 성공적으로 완료된 후, 트랜잭션을 Commit하여 이체 내용을 영구적으로 반영합니다.
- Rollback 사용 예시
- 계좌 이체 중 오류가 발생하거나 계좌 잔액이 부족한 경우, Rollback을 사용하여 이체 작업을 취소하고 트랜잭션 시작 전 상태로 복구합니다.
728x90
'CS > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 데이터베이스 정규화(Database Normalization) (1) | 2024.10.31 |
---|---|
[데이터베이스] 인덱스(Index) (0) | 2024.10.31 |
[데이터베이스] 제약조건 PK, FK, UK (Primary, Foreign, Unique Key) (0) | 2024.10.31 |
[데이터베이스] 데이터 무결성(Data Integrity) (1) | 2024.10.31 |
[데이터베이스] 기본적인 SQL (데이터 조회,삽입,수정,삭제/테이블 생성,수정,삭제,제어) (0) | 2024.10.31 |