세션이 트랜잭션 도중에 종료되면 현재 MySQL 트랜잭션이 MySQL에 의해 롤백되고 종료된다고 가정합니다. 이는 현재 트랜잭션에서 수행된 모든 데이터베이스 변경 사항이 제거됨을 의미합니다. 세션이 종료될 때 n 암시적 롤백이라고 합니다.
예시
테이블 'marks'에 다음 값이 있다고 가정합니다.
mysql> 표시에서 * 선택;+------+---------+-----------+----+| 아이디 | 이름 | 주제 | 표시 |+------+---------+----------+----+| 1 | 아라브 | 수학 | 50 || 1 | 가혹한 | 수학 | 55 || 3 | 가우라프 | 비교 | 69 || 4 | 라훌 | 역사 | 40 || 5 | 야슈라즈 | 영어 | 48 || 6 | 마낙 | 역사 | 70 |+------+---------+---------+---------+6행 세트(0.00초)사전>이제 새 트랜잭션을 시작하고 테이블 'marks'에서 행을 삭제합니다.
mysql> START TRANSACTION;쿼리 OK, 영향을 받는 행 0개(0.00초)mysql> id =4인 마크에서 삭제, 쿼리 OK, 영향 받은 행 1개(0.00초)COMMIT 또는 ROLLBACK 전에 다른 창을 열어 MySQL의 다른 인스턴스를 실행하고 다음과 같이 SHOW PROCESSLIST 명령을 실행하십시오 -
mysql> SHOW PROCESSLIST\G****************************** 1. 행 *********** ************* 아이디:2 사용자:루트 호스트:localhost:49303 db:queryCommand:절전 시간:22 상태:정보:NULL************ ***************** 2. 행 *************************** ID:3 사용자:루트 호스트:localhost:49350 db:NULL명령:쿼리 시간:0 상태:NULL 정보:집합의 processlist2 행 표시(0.00초)이제 다음과 같이 KILL 명령을 실행하여 현재 트랜잭션을 종료합니다. -
mysql> KILL 2;쿼리 OK, 영향을 받는 행 0개(0.00초)이제 현재 트랜잭션으로 돌아가 COMMIT 명령이 다음과 같이 실행될 때 -
mysql> COMMIT;ERROR 2006(HY000):MySQL 서버가 연결되지 않았습니다. 재연결 시도 중...연결 ID:4현재 데이터베이스:queryQuery OK, 영향을 받는 행 0개(1.01초)현재 세션을 종료한 위의 KILL 명령은 MySQL이 현재 트랜잭션에서 수행된 변경 사항을 롤백하도록 합니다. 다음 쿼리에서 'marks' 테이블에서 삭제된 행이 없음을 알 수 있습니다.
mysql> 표시에서 * 선택;+------+---------+-----------+----+| 아이디 | 이름 | 주제 | 표시 |+------+---------+----------+----+| 1 | 아라브 | 수학 | 50 || 1 | 가혹한 | 수학 | 55 || 3 | 가우라프 | 비교 | 69 || 4 | 라훌 | 역사 | 40 || 5 | 야슈라즈 | 영어 | 48 || 6 | 마낙 | 역사 | 70 |+------+---------+---------+---------+6행 세트(0.00초)사전>