MySQL 是否在具有自动提交功能的单个 DML 修改数据中使用事务?

Does MySQL use transaction in a single DML modified data with autocommit?

我对事务和自动提交感到困惑。但是没有文档解释 MySQL autocommit 的作用。

如果自动提交,每个INSERT UPDATE DELETE 语句将立即生效。 MySQL 是否会为此自动启动事务?

如果不是,MySQL 是做什么的?与交易有什么区别?

在我看来:

声明

INSERT INTO ...

自动提交等于

START TRANSACTION;

INSERT INTO ...;

COMMIT;

关闭自动提交。

任何时候任何条件下的两个语句执行相同的操作。

对吗?

首先,您必须知道,大多数 MySQL 存储引擎不支持事务。例如,InnoDB 支持,但 MyISAM 不支持。

在 InnoDB 中,您可以通过 2 种方式使用事务:

  • 隐式

    开始交易;
    INSERT/UPDATE/DELETE
    提交;

  • 明确

通过 SET 自动提交关闭

两者提供相同的结果