登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

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 预览。

DBeaver 数据编辑器处于 Manual commit 模式并打开 Save 下拉菜单预览 SQL 的原创界面说明图
图1:Manual commit 下的原创界面说明图,Save 下拉菜单进入 Generate Script,先看本次编辑将执行的 SQL。

2. 从 Save 下拉菜单预览待执行 SQL

在数据编辑器底部工具栏找到 Save 按钮,点击它右侧的下拉箭头,选择 Generate Script。DBeaver 会打开 Preview Changes 窗口,把当前编辑转换成可阅读、可复制的 SQL。

预览时重点看四件事:

  1. 目标表是否是当前要修改的表,避免编辑器标签页切错。
  2. WHERE 条件是否能唯一定位目标行,尤其要留意没有唯一键的表。
  3. 新值、NULL 值和字段类型是否符合预期,日期和字符串不要只看显示格式。
  4. 新增、删除或批量修改的语句数量是否与本次编辑动作一致。

如果预览中的 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 自己的内部查询也可能被统计。

DBeaver Pending transactions 窗口显示连接计数和事务列表的原创界面说明图
图2:Pending transactions 的原创结果说明图,左侧看 pending/total 计数,右侧核对当前连接的事务操作。

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 或自动提交偏好绕过了手动事务,这套检查链就不会留下可回滚的待处理状态。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>