MySQL - 如何撤消SQL 语句

在Mysql中,如何进行回滚?

什么是事务?

如果我们有一系列 SQL 语句要运行,涉及添加、删除或者更改 InnoDB 或者 BDB 表中包含的数据,但要确保所有 SQL 语句或者事务在提交之前都已成功完成,则有一个可用于执行此操作的一组 MySQL 语句。
这被称为执行事务(即要执行的 SQL 语句集)并能够执行回滚。
目前,我们只能回滚 MySQL 中 InnoDB 和 BDB 表上的事务。

欢迎来到之路教程(on itroad-com)

禁用自动提交

  1. 执行我们可能想要回滚的事务的第一步是禁用自动提交模式,以便我们始终在事务内操作,或者显式开始事务。

  2. 自动提交模式默认开启。
    要仅为当前连接更改自动提交,请输入以下 SQL 语句:

SET SESSION autocommit = 0;

像这样禁用自动提交只会影响当前客户端连接,而不会影响其他客户端连接。
它将持续到我们通过将变量设置为 1 或者关闭当前会话再次启用它。

3.如果你想显式地开始一个事务,如果你不禁用自动提交模式,你必须这样做,你可以使用下面的简单语句:

START TRANSACTION;
  1. 现在我们可以输入一系列 SQL 语句,它们将共同构成事务。
    在任何时候,我们都可以通过输入以下 SQL 语句来撤消事务的所有语句:
ROLLBACK;
  1. 如果不想撤销事务并决定提交执行的 SQL 语句,请输入以下 SQL 语句:
COMMIT;

这样事务就结束了。
请注意,某些语句不是事务性的,可能无法回滚,例如数据定义语句 CREATE TABLE、CREATE DATABASE、ALTER TABLE、DROP TABLE 和 DROP DATABASE。
事实上,其中一些语句隐式地提交了当前事务。

日期:2020-09-17 00:11:10 来源:oir作者:oir