在Mysql中,如何进行回滚?
什么是事务?
如果我们有一系列 SQL 语句要运行,涉及添加、删除或者更改 InnoDB 或者 BDB 表中包含的数据,但要确保所有 SQL 语句或者事务在提交之前都已成功完成,则有一个可用于执行此操作的一组 MySQL 语句。
这被称为执行事务(即要执行的 SQL 语句集)并能够执行回滚。
目前,我们只能回滚 MySQL 中 InnoDB 和 BDB 表上的事务。
欢迎来到之路教程(on itroad-com)
禁用自动提交
执行我们可能想要回滚的事务的第一步是禁用自动提交模式,以便我们始终在事务内操作,或者显式开始事务。
自动提交模式默认开启。
要仅为当前连接更改自动提交,请输入以下 SQL 语句:
SET SESSION autocommit = 0;
像这样禁用自动提交只会影响当前客户端连接,而不会影响其他客户端连接。
它将持续到我们通过将变量设置为 1 或者关闭当前会话再次启用它。
3.如果你想显式地开始一个事务,如果你不禁用自动提交模式,你必须这样做,你可以使用下面的简单语句:
START TRANSACTION;
- 现在我们可以输入一系列 SQL 语句,它们将共同构成事务。
在任何时候,我们都可以通过输入以下 SQL 语句来撤消事务的所有语句:
ROLLBACK;
- 如果不想撤销事务并决定提交执行的 SQL 语句,请输入以下 SQL 语句:
COMMIT;
这样事务就结束了。
请注意,某些语句不是事务性的,可能无法回滚,例如数据定义语句 CREATE TABLE、CREATE DATABASE、ALTER TABLE、DROP TABLE 和 DROP DATABASE。
事实上,其中一些语句隐式地提交了当前事务。
日期:2020-09-17 00:11:10 来源:oir作者:oir