본문 바로가기
DB/이론 및 개념

[day_05] DB / 08. 기본 SQL 5 - DCL ( COMMIT, ROLLBACK )

by 파프리카_ 2020. 8. 12.
728x90
반응형

[ 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

 

CODE [day_05] DB / 08. Transaction (COMMIT, ROLLBACK) 필요성을 확인하는 예제 - 신용카드 발급 시에 포인트��

트랜잭션 처리가 되지 않았을 때, 발생되는 문제를 확인하는 예제 SQL CARD TABLE 생성 CREATE TABLE card( id VARCHAR2(100) PRIMARY KEY, name VARCHAR2(100) NOT NULL ); POINT TABLE 생성 CREATE TABL..

creamilk88.tistory.com

 

auto COMMIT을 false로 만들어주고, 
모든 작업이 정상 수행 처리 되었을 때에만 commit()
하나의 작업이라도 오류가 되었을 떄는 rollback() 되도록 처리해준 예제 링크→ https://creamilk88.tistory.com/68

 

CODE [day_05] DB / 08_2. Transaction (COMMIT, ROLLBACK) 적용한 예제 - 신용카드 발급 시에 포인트를 지급하기

트랜잭션 처리를 통해, 발생될 수 있는 문제를 해결한 예제 *SQL TABLE의 정보들은 모두 지워주고, 기존 테이블 틀만 재활용한다. JAVA JDBC TestDAO class (main class) 트랜잭션 처리를 통해 모든 작업이 정�

creamilk88.tistory.com

728x90
반응형