본문 바로가기
데이터베이스

MySQL 트랜잭션

by 승환파크 2023. 5. 26.

트랜잭션이란 더이상 분할할 수 없는 최소 수행 단위를 말한다.

한개 이상의 DML(Data Manipulation Language)를 포함하고 있어야 하며 ALL OR NOTHING 의 특징을 가지고 있다.

 

TCL (Transaction Control Language)

트랜잭션을 제어하기 위해 사용하는 명령어이다.

 

트랜잭션 제어 명령어

  • ROLLBACK : 현재 트랜잭션에서 작업한 것들을 전부 취소하는 명령어이다.
  • COMMIT : 트랜잭션을 반영하고 싶을 때 사용하는 명령어이다.

 

TCL 연습하기

연습용 테이블 생성하기

create table mem_tcl as select mem_id, mem_name, mem_number from member;
commit;

 

mem_tcl 테이블에 데이터를 추가, 수정, 삭제하기

insert into mem_tcl value ("ASP", "에스파", 4);

update mem_tcl set mem_number = 5 where mem_name = "에스파";

delete from mem_tcl where mem_name = "에이핑크";

select * from mem_tcl;

이 명령어를 수행하면 바뀐 결과값들이 출력된다.

 

ROLLBACK으로 실행 취소하기

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

rollback;

 

이후 데이터 확인하기

select * from mem_tcl;

명령어를 실행하면 아까와는 반대로 위에서 작업한 내용이 적용되지 않은채로 출력된다.

 

위에서 실행한 3개의 데이터 조작어는 하나의 트랜잭션에 속해있다.

rollback을 실행한 순간 이 모든 작업을 취소시킨다.

 

COMMIT으로 실행결과 저장하기

 

mem_tcl 테이블에 입력, 수정, 삭제하기

insert into mem_tcl values ("IVE", "아이브", 6);

update mem_tcl set mem_id = "PINK" where mem_id = "APN";

delete from mem_tcl where mem_id = "BLK";

select * from mem_tcl;

 

commit 으로 명령어 반영하기

commit;

commit 명령어는 지금까지 트랜잭션에서 데이터 조작 관련 명령어를 통해 변경된 데이터를 모두 데이터베이스에 영구적으로 반영한다.

commit을 사용한 후로는 rollback으로 되돌릴 수 없다.

따라서 실무에서 사용할 때에도 commit을 잘못 실행해서 문제가 되는 경우가 많기 때문에 트랜잭션 작업이 정상적으로 수행되었다고 확신할 수 있을 때 사용해야 한다.

'데이터베이스' 카테고리의 다른 글

데이터베이스 DDL, DML, DCL  (1) 2023.08.09
MySQL 세션  (0) 2023.05.26
MySQL 트리거  (0) 2023.05.26
MySQL 커서  (0) 2023.05.26
MySQL 스토어드 함수  (0) 2023.05.26