如果在MySQL當前事務處理過程中執行DDL語句,將會發生什麼?
當在當前事務處理過程中執行任何DDL語句(例如建立或刪除資料庫、建立、修改或刪除表或儲存例程)時,當前MySQL事務將被提交併結束。當前事務中所做的所有資料庫更改都將永久儲存,並且無法回滾。
示例
mysql> START TRANSACTION; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO MARKS Values(6,'Manak','History',70); 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 | | 4 | Rahul | History | 40 | | 5 | Yashraj | English | 48 | | 6 | Manak | History | 70 | +------+---------+---------+---------+ 6 rows in set (0.00 sec)
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP