트랜잭션이란 하나의 논리적인 작업 단위로, 여러 개의 DML(insert, update, delete)이 하나의 트랜잭션을 구성할 수 있다. 혹은 하나의 DDL(Create, Alter, Drop, Truncate)이 하나의 트랜잭션을 구성한다.
(만약 workbench에서 Auto-Commit이 설정되어 있으면 자동으로 저장되므로, DML 하나가 하나의 트랜잭션이 됨!)
* DDL은 명령어 자체에 autocommit 내장되어있음
* DML은 설정에 따라 다름
- auto on : autocommit
- auto off : commit 또는 rollback 실행해야함. 안그러면 계속 임시데이터 상태임!
< 트랜잭션 제어 명령어 >
commit | - 변경 작업을 영구히 저장하는 명령 SQL> commit; |
rollback | - 변경 작업을 트랜잭션 처음으로 되돌리는 명령어 SQL> rollback |
savepoint | - 트랜잭션 진행 중 되돌아갈 지점을 생성하는 명령어 [예시] insert ---; update ---; savepoint 포인트명; delete ---; update ---; rollback to 포인트명; |
1) Commit : DML 작업 후 저장하는 명령어
- 작업 할 만큼 하고 commit 하면 됨
SQL> commit;
(트랜잭션 시작 후 insert문, update문 등.. 사용 후 select문 사용하면 데이터가 저장되어 보이지만, 이건 미리보기와 같음. DB에는 저장되어있지 않음!! commit 명령어 사용해야 저장됨. DM 작업시에는 저장하던가 취소하던가 해줘야함!)
* 트랜잭션 : 하나의 작업 단위
2) Rollback : DML 작업 후 취소하는 명령어
SQL> rollback;
3) MySQL Workbench 사용 시에는 설정 확인하기
① [Query] - [Auto-Commit Transactions] 가 체크되어 있는 경우(기본)
- DML 발생 시 바로 자동 저장되므로 작업 취소를 할 수 없다.
② [Query] - [Auto-Commit Transactions] 가 체크 해제되어 있는 경우
- DML 작업 후 commit 또는 rollback을 개발자가 결정해야 한다. 작업 후 select 구문을 통한 충분한 미리보기 후 저장 또는 취소를 결정할 수 있음. 그러므로 작업을 실수한 경우 되돌릴 수 있음.
- 작업 후 commit 또는 rollback으로 마무리를 반드시 해줘야 함
③ [Query] - [Commit Transaction] or [Rollback Transaction] : 수동으로 커밋 / 롤백하는 메뉴
'5. DB > 4-1. MySQL DBMS' 카테고리의 다른 글
MySQL - [ View ] (0) | 2022.05.13 |
---|---|
MySQL - [ 테이블에 선언된 제약조건 조회 ] (0) | 2022.05.10 |
MySQL - [ 서브쿼리 ] (0) | 2022.04.26 |
MySQL - [ 그룹 함수 ] (0) | 2022.04.20 |
MySQL - [ 단일 행 함수 (변환 함수 / 제어 흐름 함수 / 시스템 정보 함수)] (0) | 2022.04.19 |