使用者如何隱式結束當前 MySQL 事務?
以下是幾種可以隱式結束當前 MySQL 事務的方法:
執行 DDL 語句
執行任何 DDL 語句(例如建立或刪除資料庫、建立、修改或刪除表或儲存過程)將隱式結束當前 MySQL 事務並提交更改。這是因為在 MySQL 中,這些語句無法回滾。
示例
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO MARKS Values(3,'gaurav','Comp',69); Query OK, 1 row affected (0.26 sec) mysql> Create table student(id int, Name Varchar(10),); Query OK, 0 rows affected (0.84 sec)
在事務過程中執行 DDL 語句,此事務將隱式結束。MySQL 將儲存所有更改,並且無法回滾。我們可以透過以下結果集觀察到這一點:
mysql> Rollback; Query OK, 0 rows affected (0.00 sec) mysql> select * from marks; +------+---------+-----------+-------+ | Id | Name | Subject | Marks | +------+---------+-----------+-------+ | 1 | Aarav | Maths | 50 | | 1 | Harshit | Maths | 55 | | 3 | Gaurav | Comp | 69 | +------+---------+-----------+-------+ 3 rows in set (0.00 sec)
斷開客戶端會話
斷開客戶端會話將隱式結束當前會話,在這種情況下,更改將被回滾。
終止客戶端會話
終止客戶端會話也將隱式結束當前會話,在這種情況下,更改也將被回滾。
使用 START TRANSACTION 命令
如果執行 START TRANSACTION 命令,則當前事務將被隱式結束。在這種情況下,更改將被提交。
示例
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO Marks Values(4, 'Rahul','History',40); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO Marks Values(5, 'Yashraj','English',48); Query OK, 1 row affected (0.00 sec) mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec)
在此示例中,START TRANSACTION 語句將隱式結束事務,並提交更改。
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 | +------+---------+-----------+-------+ 5 rows in set (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP