回滚在MySQL中不起作用

Bha*_*mar 11 mysql

我有一个用户表,我有5条记录.

我删除了两条记录,然后执行了rollback命令,执行成功.

但是删除了两个未恢复的记录.

用户表引擎是InnoDB.

Ayy*_*kar 11

您应该能够回滚事务,因为表引擎是InnoDB. 在此输入图像描述

无论如何这里是正确的交易方式,

SET autocommit=0;
START TRANSACTION; 
Your Query here.
ROLLBACK;
Run Code Online (Sandbox Code Playgroud)

并确保您COMMIT在查询之后没有使用,您需要回滚.参考 表格引擎交易.并且在创建数据库连接时,默认情况下它处于自动提交模式.这意味着每个单独的SQL语句都被视为一个事务,并在执行后立即自动提交.因此,如果您需要自己进行交易,则必须关闭自动提交模式AUTOCOMMIT = 0.有关详细信息,请参阅此链接.

  • 在使用事务之前,您不需要关闭自动提交.请参阅http://dev.mysql.com/doc/refman/5.0/en/commit.html."要为一系列语句隐式禁用自动提交模式,请使用START TRANSACTION语句.使用START TRANSACTION,自动提交将保持禁用状态,直到您使用COMMIT或ROLLBACK结束事务.然后自动提交模式将恢复为先前的状态." (4认同)

YOU*_*YOU 6

By default, MySQL starts the session
for each new connection with
autocommit enabled,
Run Code Online (Sandbox Code Playgroud)

您可以在运行查询之前设置自动提交模式禁用

SET autocommit=0;
Run Code Online (Sandbox Code Playgroud)

参考:

链接1

链接2