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

Oracle数据库ROLLBACK操作失效,删除数据无法回滚求助

Oracle中ROLLBACK操作失效问题

执行的SQL操作

SELECT * FROM BOOKS;  -- 100 ROWS returned.  
DELETE FROM BOOKS;  -- 100 rows deleted  
SELECT * FROM BOOKS;  -- no rows returned.  
ROLLBACK; --Rollback complete.  
SELECT * FROM BOOKS;  -- no rows returned.

问题描述

原本预期执行ROLLBACK后能恢复所有数据,最后一次查询应返回100行,但实际无数据返回。正在学习Oracle数据库SQL,遇到该ROLLBACK失效问题。

常见原因及解决方案

  • 自动提交已开启:若会话开启了AUTOCOMMIT,DELETE执行后会自动提交事务,ROLLBACK自然无法回滚。执行SET AUTOCOMMIT OFF;关闭自动提交,再重新执行DELETE和ROLLBACK即可正常回滚。
  • 存在隐式提交的DDL操作:Oracle中执行任何DDL语句(如CREATE、ALTER、DROP)都会隐式提交之前的事务。检查DELETE到ROLLBACK之间是否执行过这类语句,若有则事务已被提交,无法回滚。
  • 事务已被手动提交:确认ROLLBACK前是否执行过COMMIT语句,手动提交后事务结束,ROLLBACK不再生效。
  • 表类型特殊:如果BOOKS是临时表,会话级临时表的数据在会话结束后清除,但DELETE操作本身可以回滚;若为事务级临时表,提交事务后数据会消失,此时ROLLBACK也无法恢复。另外若表设置为只读模式,DELETE操作本身可能不会生效,但不符合你这里的情况,可排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 17:42:11