관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

트랜잭션 제어와 세션 1 - 하나의 단위로 데이터를 처리하는 트랜잭션과 트랜잭션을 제어하는 명령어 본문

알고리즘 및 자료 관리/데이터베이스

트랜잭션 제어와 세션 1 - 하나의 단위로 데이터를 처리하는 트랜잭션과 트랜잭션을 제어하는 명령어

huenuri 2024. 8. 21. 17:48

이제 1시간 15분 정도에 걸쳐 트랜젝션의 기본적인 개념 학습을 진행해보려고 한다. 나머지 시간에는 꼭 해야 할 중요한 일이 있다. 새벽 시간이 너무나도 빨리 가는 것 같아 정말 아쉽다.

바로 이어서 공부를 진행해 볼 것이다.

 

학습 목표

  1. TCL이 무엇인지 배울 수 있다.
  2. 하나의 단위로 데이터를 처리하는 트랜젝션

학습 시간

새벽 5시 40분 ~ 6시 30분 <50분 소요>


 

 

 

 

1. 하나의 단위로 데이터를 처리하는 트랜잭션

 

트랜잭션이란?

 

 

 

 

 

 

 

 

 

 

 

 

송금 트랜잭션

이 4가지가 트랜젹션이다. 이때 COMMIT까지 해야 모든 과정이 완료된다.

 

 

 

 

 

 

 

 

 

 

 

 

만약 데이터가 유실이 되면 큰일이 난다. 모두 실행이 되지 않으면 모두 실행이 되지 않도록 해야 한다.

 

 

 

 

 

 

트랜잭션의 4가지 특성

이 부분은 시험문제에 자주 등장하므로 꼭 기억하기로 하자.

 


 

 

 

 

 

2. TCL 명령어의 종류

하나의 트랜잭션에 묶여있는 데이터 조작어(DML)의 수행 상태는 모든 명령어가 정상적으로 수행 완료된 상태 또는 모든 명령어가 취소된 상태 2가지로만 존재할 수 있다.

 

 

 

 

TCL 명령어를 사용하기 전에 먼저 테이블을 복사하여 만들어준다.

 

이러한 모든 테이블을 불러올 수 있다.

 

 

 

이제 정보를 삭제해본다.

 

그랬을 때 사장님의 정보인 100번이 삭제되었음을 볼 수 있다.

 

 

 

 

 

그런 다음 ROLLBACK을 하면 이전의 상태로 되돌릴 수 있다. 이번에는 다시 삭제를 하고 COMMIT을 했다. 이것은 영구 저장하는 명령어이다.

 

 

 

 

 

 

 

커밋을 한 다음에는 아무리 롤백을 해도 이전의 상태로 되돌아가지 않는다.


 

 

 

 

퀴즈 문제 풀기

여기까지 진행했을 때 TAB3에 저장된 값은 몇 개일까? 총 4개이다. A, B가 COMMIT으로 저장이 되고, ROLLBACK을 했으므로 C가 사라진다. 거기에 D, E을 COMMIT 했으므로 4개가 남아있다.


 

 

 

 

3. 트랜잭션을 제어하는 명령어

 

테이블 만들기

테이블을 생성하여 이러한 4개의 행을 불러왔다.

 

 

 

 

 

테이블에 데이터를 입력 · 수정 · 삭제하기

 

 

 

 

수정하고 삭제한 결과 이처럼 결과값이 바뀌었음을 확인할 수 있다.


 

 

 

 

트랜잭션을 취소하고 싶을 때 ROLLBACK

현재 트랜잭션에 포함된 데이터 조작 관련 명령어의 수행을 모두 취소한다.

다시 처음으로 돌아갔다.

 

 

 

 

 

트랜잭션을 영원히 반영하고 싶을 때 COMMIT

 

 

처음의 롤백 문장은 앞선 예제에서 진행했던 부분이다. 이렇게 3개의 작업을 진행한 결과가 나왔다.

 

 

 

 

COMMIT으로 영구 저장까지 해보았다. 이 명령어는 한번 사용하면 절대로 되돌릴 수 없으므로 매우 신중하게 선택해야 한다.


 

 

 

 

학습을 마치고

트랜잭션에 대한 학습을 여기서 마친다. 강의도 듣고 책도 보면서 예제도 실습해 보았다. 트랜잭션이 무엇인지 알게 되었고 어제 정처기 책에서 보았던 이 개념도 확실히 정립이 되어 기뻤다.


DB든 코딩이든 프로그래밍에서는 결과를 바로 확인할 수 있는 점이 정말 매력적인 것 같다. 어쩌면 이런 이유로 내가 프로그래밍과 개발을 좋아하는지도 모르겠다~ 바로 이어서 세션에 대해서 학습하고자 한다. 세션은 JSP 수업에서도 어제 배웠던 개념인데 데이터베이스에서는 어떻게 다른지 궁금하다.