You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL Developer 19.c执行COMMIT命令报错及数据未提交问题

Oracle SQL Developer 19.c COMMIT报错及数据同步问题解决

问题描述

  • 在Oracle SQL Developer 19.c的工作表中执行COMMIT;命令时,程序提示:Unknown Command: COMMIT
  • 执行的更新语句如下:
update employees_copy A 
set A.salary = (SELECT B.SALARY FROM EMPLOYEES B
                WHERE A.EMPLOYEE_ID = B.EMPLOYEE_ID)
            WHERE A.DEPARTMENT_ID = 100;
  • SQL Developer内查询显示更新后的正确结果,但SQLPlus命令行查询仍为旧值,退出并重新登录会话后问题依旧

解决办法

1. 检查自动提交设置

SQL Developer默认可能开启自动提交,此时手动执行COMMIT会因事务已自动提交而报错。

  • 操作:点击顶部菜单栏「工具」→「首选项」→「数据库」→「工作表」,查看「自动提交」选项是否勾选。
  • 若勾选,取消后手动执行COMMIT;即可正常生效;若需保持自动提交,无需手动执行COMMIT。

2. 确认事务已提交

SQL Developer中看到的正确结果可能是当前未提交事务的本地快照,实际事务并未同步到数据库(比如自动提交未开且未手动提交)。

  • 解决:在SQL Developer中执行完更新语句后,确保成功执行COMMIT;(自动提交未开启时),再去SQLPlus查询数据。

3. 验证数据库连接一致性

排查SQLPlus与SQL Developer是否连接了同一数据库实例(如不同PDB、测试/生产库),导致数据视图不一致。

  • 分别在两个工具中执行以下语句,确认数据库和容器匹配:
SELECT NAME, OPEN_MODE FROM V$DATABASE;
SELECT SYS_CONTEXT('USERENV','CON_NAME') FROM DUAL;

4. 确认更新语句实际生效

检查更新语句是否真的修改了数据:

  • 执行以下语句确认待更新行数和实际匹配行数:
-- 统计DEPARTMENT_ID=100的记录数
SELECT COUNT(*) FROM employees_copy WHERE DEPARTMENT_ID=100;
-- 统计可匹配更新的记录数
SELECT COUNT(*) FROM employees_copy A 
JOIN EMPLOYEES B ON A.EMPLOYEE_ID=B.EMPLOYEE_ID 
WHERE A.DEPARTMENT_ID=100;

内容的提问来源于stack exchange,提问作者METIN TEKIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:29:55