在oracle 10g中回滚

时间:2016-03-29 17:17:18

标签: sql oracle sql-delete

我有一张表,我从中删除了一行

delete from patient where pid=500;

现在,我回滚上面的查询并成功完成但是在查询时

select *from patient;

我明白了:

  

"未选择任何行"

那么,回滚会取消会话中的所有操作吗?

但表格结构存在,根据我的小知识,我认为删除 只是删除可以通过回滚检索的记录,还是因为我没有提交我的插入?

2 个答案:

答案 0 :(得分:0)

  1. 删除将仅删除数据,而不删除表结构。
  2. 回滚应该适用于DELETE from语句,该语句在删除之前创建一个保存点。
  3. 如果它仍然不起作用,并且如果启用了表的闪回,则要恢复数据:

    ALTER TABLE xxTABLENAMExx
       ENABLE ROW MOVEMENT;
    
    FLASHBACK TABLE xxTABLENAMExx
      TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '20' minute);
    
    ALTER TABLE xxTABLENAMExx
       DISABLE ROW MOVEMENT;
    
  4. 输入您希望表格回滚到的分钟数。

答案 1 :(得分:0)

这将是会话autocommit on的结果,如果您使用任何类型的java工具或使用默认设置autocommit on运行的任何其他工具,您将失去回滚功能(闪回仍然是选项),要具备将会话设置为autocommit off

所需的回滚功能