mysql - 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;
但是该表不会回到最后一次提交
谁能告诉我这里出了什么问题?谢谢!
解决方案
默认情况下,MySQL 在启用自动提交的情况下为每个新连接启动会话,因此如果该语句没有返回错误,MySQL 会在每个 SQL 语句之后执行提交
选项 1:关闭自动提交
SET autocommit = 0
选项 2:使用事务边界。
START TRANSACTION;
UPDATE department_dup
SET
dept_no = 'd011',
dept_name = 'Quality Control'
;
ROLLBACK;
推荐阅读
- javascript - 在 react js 中对齐我的网页的输入字段。似乎无法理解我必须遵循的对齐方式。附布局
- minecraft - 找不到 Minecraft Education Edition 的文档
- python - 如何在 UTF-8 文件的开头去除垃圾字符
- flutter - 颤振分析错误太多
- web-worker - 通过blob throwing importscripts加载的来自不同域的Webworker无法加载
- java - 错误 - java.lang.ClassCastException:com.google.android.material.appbar.AppBarLayout 无法转换为 androidx.appcompat.widget.Toolbar
- react-native - 从嵌套屏幕导航到不同选项卡堆栈中的另一个嵌套屏幕(反应导航)
- android - Android Studio (IntelliJ) 的 AVD 管理器无法打开设备文件资源管理器
- python - 如何使用 pyspark 设置 Hadoop 文件系统和文件?
- docker - Kubernetes 可以从 Docker 的本地存储中加载图像吗?