當在目前交易中執行任何DDL語句(如CREATE或DROP資料庫,CREATE、ALTER或DROP表或預存程序),目前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)
以上是如果在MySQL目前交易的中間執行DDL語句,會發生什麼情況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!