----------------------------
TRANSACTION
----------------------------
- 데이터베이스의 상태를 변환시키는 작업 단위(임의로 조절 가능)
- 작업 중 문제가 생기면 rollback으로 원래 상태로 되돌릴 수 있음
----------------------------
트랜잭션 성질
----------------------------
-- 원자성 : 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 함
(트랜잭션의 연산은 모두 반영되도록 COMMIT 되거나 전혀 반영되지 않도록 ROLLBACK 되어야 함)
어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되야 함
-- 일관성 : 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 함
-- 독립성, 격리성 : 트랜잭션 수행 시 다른 트랜잭션 연산에 끼어들지 못하도록 보장
수행 중인 트랜잭션은 완전히 완료될 때까지 다른 트랜잭션에서의 수행 결과를 참조할 수 없음
-- 영속성, 지속성 : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장 나더라도 영구적으로 반영되어야 함
먼저 테이블 하나를 만들어 준다.

그리고 값을 넣어준다.


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

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

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

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

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

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

● 예외 처리

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

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

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

rollback 후 select * 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 |