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

세션이 트랜잭션 중간에 종료되면 현재 MySQL 트랜잭션은 어떻게 됩니까?


세션이 트랜잭션 중간에 종료되면 현재 MySQL 트랜잭션이 MySQL에 의해 롤백되고 종료된다고 가정합니다. 이는 현재 트랜잭션에서 수행된 모든 데이터베이스 변경 사항이 제거됨을 의미합니다. 세션이 종료될 때 n 암시적 롤백이라고 합니다.

예시

테이블 'marks'에 다음 값이 있다고 가정합니다.

mysql> Select * from marks;
+------+---------+-----------+-------+
| Id   | Name    | Subject   | Marks |
+------+---------+-----------+-------+
| 1    | Aarav   | Maths     | 50    |
| 1    | Harshit | Maths     | 55    |
| 3    | Gaurav  | Comp      | 69    |
| 4    | Rahul   | History   | 40    |
| 5    | Yashraj | English   | 48    |
| 6    | Manak   | History   | 70    |
+------+---------+-----------+-------+
6 rows in set (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE marks SET Name = ‘Yash’ Where id = 5;
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> quit;
Bye

위의 예에서 테이블의 값을 업데이트한 후 quit 문을 실행하여 세션을 종료합니다. 세션을 다시 시작한 후 테이블을 확인하면 트랜잭션 중간에 세션이 종료되기 때문에 업데이트된 값은 MySQL에 의해 롤백되었습니다.