DBeaver 数据编辑器提交前怎样查看待执行变更
来源:17golang原创
时间:2026-11-14 04:17:22 295浏览 收藏
DBeaver 数据编辑器中,想在最终提交前看清“到底会改哪些行”,关键是把连接切到 Manual commit,先用 Save 旁边的下拉菜单生成 SQL 预览,再打开 Pending transactions 查看当前会话的未提交操作。确认目标、条件和新值都正确后点击 Commit;发现误改则点击 Rollback。
官方地址:https://dbeaver.com/
官方文档:https://dbeaver.com/docs/dbeaver/
最稳妥的检查顺序是“Manual commit → Generate Script → Save → Pending transactions → Commit/Rollback”。其中 Generate Script 负责看将要执行的 SQL,Pending transactions 负责确认当前事务里已经执行过、但还没有最终提交的操作。
先分清三个容易混淆的状态
DBeaver 的数据编辑器至少有三层状态:单元格刚改但还没有保存、编辑器已经把修改语句发给数据库、当前事务已经 Commit。标题中的“提交前”最好指最后一步 Commit 之前,因为只要连接处于手动提交模式,修改语句执行后仍然可以从当前事务中回滚。
| 状态 | 你能做什么 | 对应按钮 |
|---|---|---|
| 编辑器有未保存改动 | 继续修改或丢弃本次编辑 | Save / Cancel |
| 语句已执行但事务未结束 | 查看操作、最终提交或撤销 | Pending transactions / Commit / Rollback |
| Auto-commit | 每条语句执行后立即提交,通常不能再回滚 | Auto-commit |
1. 切换 Manual commit,再编辑目标单元格
打开目标表的 Data 标签,先看数据编辑器顶部工具栏的事务模式。点击事务模式按钮,选择 Manual commit。不要在需要逐条审核的任务中直接使用 Auto-commit,因为自动提交会让每条数据修改立即生效。
接着双击目标单元格,或者右键单元格选择 Inline edit,输入新值后按回车并移到另一个单元格。此时底部工具栏的 Save 和 Cancel 会变为可用。这里先不要急着点击 Save,先进行 SQL 预览。

2. 从 Save 下拉菜单预览待执行 SQL
在数据编辑器底部工具栏找到 Save 按钮,点击它右侧的下拉箭头,选择 Generate Script。DBeaver 会打开 Preview Changes 窗口,把当前编辑转换成可阅读、可复制的 SQL。
预览时重点看四件事:
- 目标表是否是当前要修改的表,避免编辑器标签页切错。
WHERE条件是否能唯一定位目标行,尤其要留意没有唯一键的表。- 新值、NULL 值和字段类型是否符合预期,日期和字符串不要只看显示格式。
- 新增、删除或批量修改的语句数量是否与本次编辑动作一致。
如果预览中的 SQL 不对,关闭 Preview Changes 回到网格,用 Cancel 丢弃尚未保存的编辑,再重新选择目标行。Generate Script 是预览动作,不等于已经把修改提交到数据库。
3. 保存编辑后打开 Pending transactions
确认预览无误后点击 Save,让数据编辑器执行本次修改。随后在当前 SQL Editor 或 Data Editor 的顶部工具栏,点击 Transaction Log 旁边的箭头,选择 Pending transactions。
弹窗左侧的 Connections 列表显示连接和 pending / total 计数,右侧的 Transactions 列表显示选中连接里的操作。默认只显示有未提交事务的连接;需要查看其它活动连接时勾选 Show all connections。
如果想扩大核对范围,可以勾选 Show previous transactions 查看当前会话的历史事务,或勾选 Show all queries 把非事务查询也列出来。计数不一定等于你手工执行的语句数,因为 DBeaver 自己的内部查询也可能被统计。

4. 核对后选择 Commit 或 Rollback
在 Pending transactions 中选中有未提交变更的连接,逐条对照操作列表。确认表、条件和数量都正确后点击 Commit,当前事务中的待处理变更会一起应用;如果发现误改、目标连接不对或预览与预期不一致,点击 Rollback,撤销当前事务中的已执行变更。
也可以直接使用主工具栏的 Commit 或 Rollback。成功后 Pending 窗口中的对应按钮会被禁用。提交后如需看到最新结果,再点击数据编辑器的 Refresh。
注意 Cancel 和 Rollback 不是一回事:Cancel 只丢弃还没有点击 Save 的网格编辑;Rollback 处理的是已经执行到当前事务、但尚未最终提交的数据库变更。
5. 检查自动提交设置,避免预览流程失效
如果每次编辑后都没有可回滚的事务,先检查连接是否处于 Auto-commit。需要稳定复核时,在连接工具栏切换到 Manual commit,或进入 Edit Connection → Connection settings → Initialization,把默认事务模式设为 Manual commit。
还要检查 Preferences → Editors → Data Editor 中的 Commit session on value edit apply。这个选项会在应用标量值编辑后自动提交事务;编辑大字段时也要留意同一页的 Commit session on content edit apply。如果你的目标是手工预览并统一提交,应关闭会自动结束事务的选项。
DBeaver 的 Smart commit 可以在自动提交模式下遇到数据修改时切换到手动提交,但它改变的是事务模式,不会替代你对 Preview Changes 和 Pending transactions 的核对。
常见问题
为什么 Pending transactions 里没有记录?
常见原因是连接处于 Auto-commit,或者你还没有点击 Save 让编辑器执行修改。也可能已经 Commit/Rollback,当前事务自然变成空的。
Preview Changes 能不能代替 Rollback?
不能。Preview Changes 发生在执行前,Rollback 发生在语句已经执行但事务仍开放时。一个用于提前检查 SQL,一个用于撤销当前事务。
为什么一个 UPDATE 让计数增加不止一条?
Pending transactions 的计数包含当前事务里的用户查询和 DBeaver 内部查询,因此不要只按手工点击次数解释计数;应以右侧事务列表中的目标操作和连接状态为准。
速查结论
需要“改之前看 SQL”,走 Save → Generate Script;需要“执行之后看事务”,走 Transaction Log → Pending transactions;确认正确点击 Commit,发现问题点击 Rollback。只要 Auto-commit 或自动提交偏好绕过了手动事务,这套检查链就不会留下可回滚的待处理状态。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习