Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Điều gì xảy ra với giao dịch MySQL nếu câu lệnh DDL được thực thi giữa chừng?

Giao dịch MySQL hiện tại sẽ được commit và kết thúc khi bất kỳ câu lệnh DDL nào (như CREATE hoặc DROP database, CREATE, ALTER hoặc DROP table, stored routines) được thực thi giữa chừng giao dịch hiện tại. Tất cả thay đổi cơ sở dữ liệu sẽ trở nên vĩnh viễn và không thể rollback.

Ví dụ

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)

Như thấy, một câu lệnh DDL được thực thi giữa giao dịch → giao dịch kết thúc ngầm. MySQL lưu tất cả thay đổi và không thể rollback. Quan sát tập kết quả sau:

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)