事务

事务就是一组 SQL 语句,作为一个工作单元以原子方式进行处理。如果数据库引擎能够成功地对数据库应用整组语句,那么就执行该组语句。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么整组语句都不执行。也就是说,作为事务的一组语句,要么全部执行成功,要么全部执行失败。

可以用 START TRANSACTION 语句启动事务,然后要么使用 COMMIT 提交事务将修改的数据持久保留,要么使用 ROLLBACK 撤销所有的修改。

AUTOCOMMIT

默认情况下,单个 INSERT、UPDATE 或 DELETE 语句会被隐式包装在一个事务中并在执行成功后立即提交,这称为自动提交(AUTOCOMMIT)模式

通过禁用此模式,可以在事务中执行一系列语句,并在结束时执行 COMMIT 提交事务或 ROLLBACK 回滚事务。在当前连接中,可以使用 SET 命令设置 AUTOCOMMIT 变量来启用或禁用自动提交模式。启用可以设置为 1 或者 ON,禁用可以设置为 0 或者 OFF。

  • 如果设置了 AUTOCOMMIT=0,则当前连接总是会处于某个事务中,直到发出 COMMIT 或者 ROLLBACK,然后 MySQL 会立即启动一个新的事务。

  • 当启用 AUTOCOMMIT 时,也可以使用关键字 BEGIN 或者 START TRANSACTION 来开始一个多语句的事务。

最后更新于