点保存(Ctrl+S)不等于提交,必须显式Commit才让修改对其他会话可见;DBeaver默认自动提交,但Oracle、PostgreSQL等新建连接常关闭该模式,导致修改仅在当前会话缓存,未持久化且其他连接不可见。

点保存(Ctrl+S)不等于提交,必须显式 Commit 才能让修改对其他会话可见。
为什么改完数据点了保存却查不到?
这是事务隔离导致的典型现象:DBeaver 默认开启自动提交(Auto-commit),但很多连接(尤其是 Oracle、PostgreSQL)在新建连接时实际是关闭的——你看到的“已保存”只是当前会话内缓存了变更,还没真正写入数据库文件,其他连接(比如你的 Java 应用、另一个 DBeaver 窗口、甚至同一连接里新开的查询标签页)都查不到这条记录。
- 常见错误现象:
SELECT能查到刚改的数据,但程序连同一库执行相同SELECT却返回旧值或空 - 本质原因:未触发
COMMIT,事务仍处于“未提交”状态 - 验证方式:新开一个 SQL 编辑器标签页,执行相同查询——如果查不到,基本可确认是事务未提交
如何手动触发 Commit(含快捷键和按钮)
DBeaver 提供三种等效方式完成提交,优先推荐带视觉反馈的按钮操作:
- 点击顶部工具栏的
Commit按钮(图标为向右箭头+勾,通常在连接名右侧) - 右键结果集区域 → 选择
Commit(注意不是右键某一行,而是空白处或表头) - 快捷键
Ctrl+Enter在 SQL 编辑器中执行COMMIT;语句(需先打开新编辑器并输入)
⚠️ 注意:如果没看到 Commit 按钮,说明当前连接处于自动提交模式,需先关闭它(见下一条)。
怎么确认并切换自动提交开关?
自动提交是否开启,直接决定你是否需要手动点 Commit。判断和修改方法如下:
- 查看当前状态:连接名右侧若显示
[AUTOCOMMIT],表示已启用;若无此标记,大概率是关闭的 - 临时切换(单次会话):右键连接 →
Toggle Auto-Commit,立即生效,无需重启 - 永久设置(推荐 Oracle/PG 用户):菜单栏
窗口 → 首选项 → 数据库 → 编辑器 → SQL 编辑器 → 执行 → 勾选/取消 始终使用自动提交 - 性能影响:自动提交会让每条
INSERT/UPDATE/DELETE都触发一次磁盘写入,高并发批量操作时明显变慢
误操作后怎么回滚未提交的修改?
只要还没点 Commit,所有增删改都可逆——但必须在同一个数据库连接会话内操作:
- 快捷方式:右键结果集区域 →
Rollback(图标为向左箭头+叉) - SQL 方式:在 SQL 编辑器中执行
ROLLBACK;并按Ctrl+Enter - 关键限制:
Rollback只能撤回当前会话中自上一次Commit或Rollback之后的所有变更 - 容易被忽略的点:关闭 DBeaver 窗口 ≠ 自动 Rollback —— 如果没手动 Commit 或 Rollback,部分驱动(如 Oracle JDBC)会在连接断开时隐式 Rollback,但 PostgreSQL 默认会中断并丢弃未提交事务,行为不统一


















