如果会话在事务中间结束,当前 MySQL 事务会发生什么情况?
mysqlmysqli database
假设会话在事务中间结束,那么当前 MySQL 事务将被 MySQL 回滚并结束。这意味着当前事务中所做的所有数据库更改都将被删除。这称为会话结束时的隐式回滚。
示例
假设我们在表"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 回滚,因为会话是在事务中间结束的。