반응형
트랜잭션 ?
하나의 논리적인 작업 단위
여러 개의 DML이 하나의 트랜잭션을 구성할 수 있음(insert, update, delete)
하나의 DDL이 하나의 트랜잭션을 구성함(create, alter, drop, truncate)
1. commit
: 변경작업을 영구히 저장
2. rollback
: 변경작업을 트랜잭션 처음으로 되돌림
commit;
-------------------------------------------
Transection1(start)-> insert ---;
update ---;
update ---;
commit;
<- Transection1(end)
------------------------------------------
Transection2(start)-> delete ---;
update ---;
rollback;
<- Transection2(end)
------------------------------------------
T(start, end) -> create table ---;(DDL)
(auto commit 내포)
-------------------------------------------
T(start) -> insert ---;
update---;
create table---;
(autocommit)
<- T(end)
3. savepoint
: 트랜잭션 진행 중 되돌아갈 지점을 생성 하는 명령어 (중간 저장 x)
savepoint 생성 : create savepoint 포인트명;
savepoint로 되돌리기 : rollback to 포인트명;
트랜잭션 종료 시 자동 삭제됨.
-----------------------------
T(start)->
update ---;
savepoint A;
update ---;
delete ---; -- (여기서 취소)
savepoint B;
insert ---;
rollback to A ( 처음 update 임시데이터 상태)
.
.
.
commit; or rollback;
<- T(end)
rollback : 트랜잭션의 처음으로 되돌림 => 트랜잭션 종료 o
rollback to : 해당 포인트 지점으로 되돌림 =>트랜잭션 종료 x
연습!
* auto-commit transacrions 설정 해제 후
ⓐ 101번 사원 salary 변경 & savepoint A생성
ⓑ 102번 사원 salary 변경 & savepoint B생성
ⓒ 102번 사원 salary 변경 취소 -------> A로 rollback
ⓓ 102번 사원 salary 변경 전으로 롤백 완료 ------- 아직 임시데이터 상태
=> commit 해야함
저장 완료!
반응형
'STUDY > DATABASE' 카테고리의 다른 글
MYSQL -DDL(데이터 정의어) (0) | 2022.05.06 |
---|---|
MYSQL - 연습문제(DML) (0) | 2022.05.02 |
MYSQL - DML_데이터 삭제(delete) (0) | 2022.05.02 |
MySQL - 단일 행 함수(문자함수) (0) | 2022.04.15 |
MySQL - JOIN (0) | 2022.04.12 |