在 oracle 10g 中回滚

Rollback in oracle 10g

我有一个table,我从中删除了一行

delete from patient where pid=500;

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

select *from patient;

我得到:

"no rows selected"

那么,回滚是否撤消了会话中的所有操作?

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

  1. 删除自只会删除数据,不会删除 table 结构。
  2. 回滚应该适用于 DELETE from 语句,它在删除之前创建一个保存点。
  3. 如果还是不行,如果table的闪回开启了,取回数据:

    ALTER TABLE xxTABLENAMExx
       ENABLE ROW MOVEMENT;
    
    FLASHBACK TABLE xxTABLENAMExx
      TO TIMESTAMP (SYSTIMESTAMP - INTERVAL '20' minute);
    
    ALTER TABLE xxTABLENAMExx
       DISABLE ROW MOVEMENT;
    

输入您希望 table 回滚到的时间段(以分钟为单位)。

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