IT수업/데이터베이스

it 수업 7주차 (26) TRANSACTION (ROLLBACK)

워제하 2024. 2. 8. 11:28

----------------------------
TRANSACTION
----------------------------

- 데이터베이스의 상태를 변환시키는 작업 단위(임의로 조절 가능)
- 작업 중 문제가 생기면 rollback으로 원래 상태로 되돌릴 수 있음

 

 

----------------------------
트랜잭션 성질
----------------------------

-- 원자성 : 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 함
                 (트랜잭션의 연산은 모두 반영되도록 COMMIT 되거나 전혀 반영되지 않도록 ROLLBACK 되어야 함)
                  어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되야 함
       
-- 일관성 : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함


-- 독립성, 격리성 : 트랜잭션 수행 시 다른 트랜잭션 연산에 끼어들지 못하도록 보장
                              수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서의 수행 결과를 참조할 수 없음


-- 영속성, 지속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함

 

 

 

 

 

먼저 테이블 하나를 만들어 준다.

 

 

그리고 값을 넣어준다.

 

 

 

 

start transaction을 해준 뒤 다른 값들도 넣어준다.

( mysql에서는 기본으로 auto commit이 on으로 설정 되어 있다. 그러므로 start transaction으로 auto commit을 없애준다.)

 

 

rollback 하지 않은 상태로 tbl을 보면 값이 들어 간 것을 볼 수 있다.

 

여기서 commit을 하지 않고 rollback을 하면 다시 원래 상태로 돌아간다.

rollback 후

 

 

 

 

 

● save point로 어느 위치에서 rollback 할지 지정

 

값을 넣고 rollback을 하지 않은 상태이다

 

여기서 원하는 위치로 롤백하면 그 위치까지 돌아가게 된다.

 

rollback to s2;

 

 

 

● 예외 처리

 

동일한 값이 들어갔기 때문에 오류가 발생한다. 

 

select * from tbl_tx; 하면 rollback이 되지 않기 때문에 그대로 값이 나오게 된다.

 

 

 

그래서 위의 코드에 rollback을 추가하여 select * from tbl_tx; 하면 아무 값이 들어가 있지 않게 된다.

 

rollbackselect * from tbl_tx; 한 상태

 

rollback 위치를 선정해서 rollback 할 수도 있다.

 

 

 

 

 

 

 

'IT수업 > 데이터베이스' 카테고리의 다른 글

it 수업 7주차 (28) TRIGGER  (0) 2024.02.08
it 수업 7주차 (27) EXCEPTION  (0) 2024.02.08
it 수업 7주차 (25) Procedure  (1) 2024.02.07
it 수업 7주차 (24) PIVOT  (1) 2024.02.07
it 수업 7주차 (23) JSON  (0) 2024.02.05