Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

해당 트랜잭션 중간에 DDL 문이 실행되면 MySQL 현재 트랜잭션은 어떻게 됩니까?


현재 MySQL 트랜잭션은 CREATE 또는 DROP 데이터베이스, Create, ALTER 또는 DROP 테이블 또는 저장 루틴과 같은 DDL 문이 현재 실행되는 중간에 실행될 때 커밋되고 종료됩니다. 거래. 현재 트랜잭션에서 수행된 모든 데이터베이스 변경 사항은 영구적으로 만들어지며 롤백할 수 없습니다.

예시

mysql> START TRANSACTION;쿼리 OK, 영향을 받는 행 0개(0.00초)mysql> INSERT INTO MARKS Values(6,'Manak','History',70);쿼리 OK, 영향을 받는 행 1개(0.26초)mysql> 테이블 생성 학생(id int, Name Varchar(10),);쿼리 OK, 영향을 받는 행 0개(0.84초)

위의 예에서 볼 수 있듯이 DDL 문이 트랜잭션 중간에 실행되었으므로 이 트랜잭션은 암시적으로 종료됩니다. MySQL은 모든 변경 사항을 저장하며 롤백할 수 없습니다. 다음 결과 세트의 도움으로 이를 관찰할 수 있습니다 -

mysql> 롤백, 쿼리 확인, 영향을 받는 행 0개(0.00초) mysql> 표시에서 * 선택;+------+---------+-------- ---+----+| 아이디 | 이름 | 주제 | 표시 |+------+---------+----------+----+| 1 | 아라브 | 수학 | 50 || 1 | 가혹한 | 수학 | 55 || 3 | 가우라프 | 비교 | 69 || 4 | 라훌 | 역사 | 40 || 5 | 야슈라즈 | 영어 | 48 || 6 | 마낙 | 역사 | 70 |+------+---------+---------+---------+6행 세트(0.00초)