[ DCL (Data Control Language) ]
SQL에서 데이터를 제어하는 DCL의 KEYWORD에 대해 배워보자 !
트랜잭션 (Transaction)
: 작업 단위 or 업무 단위
: 트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위를 말한다.
: COMMIT과 ROLLBACK이 이에 속한다.
COMMIT
: 변경된 모든 내용을 실제 데이터베이스에 반영/저장 (실제 디스크에 저장)
ROLLBACK
: 변경된 모든 내용을 취소하고, 이전 상태로 돌린다 (COMMIT 이전의 상태로 복구)
예제 1)
예제 링크 → https://creamilk88.tistory.com/65?category=870903
계좌이체 업무 단위 (계좌이체 transaction) 에서는
1. 송금자의 계좌에서 출금작업
2. 송금자의 계좌에서 출금한 일시와 사용한 기기에 대한 정보에 대한 이력 저장
3. 수금자의 계좌 유무 확인 작업
4. 수금자에 송금액을 입금 작업
5. 수금자의 이체 일시와 기차 정보에 대한 이력 저장
위 작업이 모두 정상적으로 수행되었을 때에만 실제 데이터베이스에 정보를 저장 → COMMIT
만약 하나의 작업이라도 문제가 발생할 경우 현 작업 단위의 모든 작업을 취소 → ROLLBACK
≫ 이를 위해서는 데이터베이스를 사용하는 프로그램 차원에서 COMMIT을 수동 모드로 전환해야 한다.
JDBC에서는 기본이 AutoCOMMIT 모드이므로 수동모드로 전환 후, 트랙잭션 처리를 해야 한다.
예제 2)
'신용카드 발급 시에 포인트를 지급하기' 작업단위 설정
1. 카드 발급
2. 포인트 지급
만약 포인트 지급 시에 문제가 발생 할 경우 작업 취소(ROLLBACK)하고,
1, 2번 작업이 모두 정상적으로 수행되었을 때 실제 DB에 반영(COMMIT)하도록 구현해보자 !
autoCOMMIT 시 문제 발생 예제 링크 → https://creamilk88.tistory.com/67
auto COMMIT을 false로 만들어주고,
모든 작업이 정상 수행 처리 되었을 때에만 commit()
하나의 작업이라도 오류가 되었을 떄는 rollback() 되도록 처리해준 예제 링크→ https://creamilk88.tistory.com/68
'DB > 이론 및 개념' 카테고리의 다른 글
[day_06] DB / 10. IN, NOT IN 연산자 (2) | 2020.08.13 |
---|---|
[day_05] DB / 09. 기본 SQL 6 - Sub Query 서브쿼리, GROUP BY, HAVING (0) | 2020.08.12 |
[day_04] DB / 07. JDBC Interface 를 다시 한 번 복습하자! (0) | 2020.08.11 |
[day_03] DB / 06. SQL 기본 4 - Oracle SEQUENCE 시퀀스 (0) | 2020.08.10 |
[day_02] DB / 05. 기본 SQL 3 - Oracle 함수 (0) | 2020.08.08 |