如何在Oracle云自治数据库的SQL Developer Web中禁用自动提交
Oracle SQL Developer Web禁用自动提交及rollback失效问题解决方法
问题根本原因
SQL Developer Web的前端配置项默认开启了自动提交,优先级高于set autocommit off语句配置,工具会在每次执行单条DML语句后自动触发隐式提交,导致后续执行的rollback命令没有可回滚的未提交事务。
正确禁用自动提交操作步骤
- 进入SQL Developer Web工作页面,点击页面右上角的齿轮状设置图标
- 在弹出的设置侧边栏中,展开左侧数据库分类,选择工作表子项
- 找到右侧配置项中的「自动提交」复选框,取消勾选
- 点击保存按钮确认配置修改,关闭当前所有已打开的工作表标签,重新打开新的工作表后配置才会生效
配置生效验证方法
按测试流程验证即可:
- 向空表插入测试数据:
insert into t_test values('测试内容'); - 查询确认数据存在:
select * from t_test; - 执行回滚命令:
rollback; - 再次查询表数据,若数据已清空代表自动提交已成功禁用
注意事项
DDL语句(
create、alter、drop、truncate等)执行时Oracle会默认触发全局隐式提交,这类操作产生的数据变动无论是否开启自动提交都无法通过rollback回滚。
若仅需要临时关闭单会话的自动提交,可在新打开的工作表最开始执行BEGIN DBMS_APPLICATION_INFO.SET_CLIENT_INFO('DISABLE_AUTOCOMMIT'); END;,该配置仅对当前工作表会话生效。
内容的提问来源于stack exchange,提问作者Lev
相关产品推荐
相关产品推荐

