首页 > 解决方案 > SQL 回滚不会回到上次提交

问题描述

我在 SQL 中遇到以下问题:

SELECT
    *
FROM
    department_dup
ORDER BY dept_no;

在此处输入图像描述

然后我运行了这段代码:

COMMIT;

UPDATE department_dup
SET
    dept_no = 'd011',
    dept_name = 'Quality Control'
    ;

ROLLBACK;
SELECT * from department_dup;

但是该表不会回到最后一次提交

在此处输入图像描述

谁能告诉我这里出了什么问题?谢谢!

标签: mysqlsql

解决方案


默认情况下,MySQL 在启用自动提交的情况下为每个新连接启动会话,因此如果该语句没有返回错误,MySQL 会在每个 SQL 语句之后执行提交

选项 1:关闭自动提交

SET autocommit = 0

选项 2:使用事务边界。

START TRANSACTION;

UPDATE department_dup
SET
    dept_no = 'd011',
    dept_name = 'Quality Control'
    ;

ROLLBACK;

推荐阅读