通过运行 ddl 语句当前 mysql 事务将隐式结束,并且将通过运行任何 ddl 语句(例如 create 或 drop 数据库、create、alter 或 drop 表或存储例程)来提交更改。这是因为,在mysql中,这些语句是无法回滚的。
示例mysql> start transaction;query ok, 0 rows affected (0.00 sec)mysql> insert into marks values(3,'gaurav','comp',69);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 |+------+---------+-----------+-------+3 rows in set (0.00 sec)
通过断开客户端会话断开客户端会话将隐式结束当前会话,在这种情况下,更改将回滚。
通过终止客户端会话终止客户端会话也将隐式结束当前会话,在这种情况下,更改也将回滚。
通过 start transaction 命令当前如果我们运行 start transaction 命令,事务将隐式结束。在这种情况下,将提交更改。
示例mysql> start transaction;query ok, 0 rows affected (0.00 sec)mysql> insert into marks values(4, 'rahul','history',40);query ok, 1 row affected (0.00 sec)mysql> insert into marks values(5, 'yashraj','english',48);query ok, 1 row affected (0.00 sec)mysql> start transaction;query ok, 0 rows affected (0.00 sec)
在此示例中,start transaction 语句将隐式结束事务并提交更改。
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 |+------+---------+-----------+-------+5 rows in set (0.00 sec)
以上就是用户如何隐式结束当前的 mysql 事务?的详细内容。