如果在MySQL当前事务的中间执行DDL语句,会发生什么情况?

数据库数据库 2023-08-31 03:45:56 988
摘要: 示例mysql>STARTTRANSACTION;QueryOK,0rowsaffected(0.00sec)mysql>INSERTINTOMARKSValues(6,'Manak','History',70);QueryOK,1rowaffected(0.26sec)mysql>Createtablest...

如果在MySQL当前事务的中间执行DDL语句,会发生什么情况?

示例

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语句,会发生什么情况?的详细内容,更多请关注其它相关文章!