본문 바로가기
DB

[MySQL] 트랜잭션(Transaction) - TCL(ROLLBACK, SAVEPOINT, COMMIT)

by 이잔디 2022. 3. 16.

트랜잭션(Transaction)

- 데이터베이스의 상태를 변화시키는 일종의 작업 단위

START TRANSACTION   COMMIT, ROLLBACK이 나올 때까지 실행되는 모든 SQL
COMMIT   모든 코드를 실행
ROLLBACK   STRAT TRANSACTION 실행 전 상태로 되돌림
SAVEPOINT   현재의 트랜잭션을 작게 분할하는 명령어

📌 DDL이나 DCL이 중간에 실행되면 COMMIT된다. ROLLBACK할 수 없다!

create table test_transaction(
	val varchar(10)
);

 

ROLLBACK

start transaction;

insert into test_transaction values('a');
insert into test_transaction values('b');
insert into test_transaction values('c');

rollback;

select * 
from test_transaction;

- rollback 후 test_transcation 테이블에 아무것도 없다.

 

COMMIT

start transaction;

insert into test_transaction values('a');
insert into test_transaction values('b');
insert into test_transaction values('c');

commit;

select * 
from test_transaction;

- commit 후 insert한 value가 들어가 있는 것을 확인할 수 있다.

 

SAVEPOINT

start transaction;

insert into test_transaction values('a');
insert into test_transaction values('b');
insert into test_transaction values('c');

savepoint p1;

insert into test_transaction values('d');
insert into test_transaction values('e');
insert into test_transaction values('f');

select * 
from test_transaction;

rollback to p1;

select * 
from test_transaction;

rollback 전 결과
rollback 후 결과