当在当前事务中执行任何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语句,会发生什么情况?的详细内容。