以下是隱含結束目前MySQL 交易的方法-
目前MySQL 交易將隱含結束,並且將透過執行任何DDL 語句(例如CREATE 或DROP 資料庫、Create、ALTER 或DROP 表或儲存例程)來提交變更。這是因為,在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 指令,交易將會隱式結束。在這種情況下,將提交更改。
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)
以上是使用者如何隱式結束目前的 MySQL 事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!