트랜잭션이란 더이상 분할할 수 없는 최소 수행 단위를 말한다.
한개 이상의 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 |