如果在事務進行時執行 DDL 語句,MySQL 當前事務將會怎樣?
如果在當前事務中執行任何 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