如何在SQL中撤消ROLLBACK?

时间:2019-01-03 16:07:34

标签: sql oracle transactions

我正在学习Oracle SQL,在执行DELETE命令之后,我尝试执行ROLLBACK。问题是我再次错误地按了F9键,ROLLBACK又跑了一次。现在,它已从表格中删除了我所有的INSERT,我不知道该如何找回它们。

我尝试再次插入相同的查询,但是PK(主键)出现问题。另外,我无法删除该表以重新开始,因为我还有其他与此表结合使用的FK(外键)表。

2 个答案:

答案 0 :(得分:3)

不幸的是,您无法撤消ROLLBACK,就像无法撤消COMMIT一样。这是设计使然。

您进行ROLLBACK时会发生什么,就是直到该点之前所有未提交的更改都将丢失。如果两次调用之间未执行任何更改,则两次调用ROLLBACK无效。

所以问题是:在运行COMMIT之前,您INSERTDELETE吗?

  • 如果是:ROLLBACK刚刚恢复了DELETE命令,那么您的INSERT s应该不会丢失

  • 如果否:ROLLBACK也还原了INSERT s

在两种情况下,您呼叫ROLLBACK一次还是两次都没有关系。

答案 1 :(得分:0)

您不能撤消回滚。回滚不是“撤消”,因此没有“重做”。是“把这些变化扔掉,我不想要”

我建议您从第二个问题开始,解释您的意思:“主键PK出现问题。” 并寻求帮助。

没有退路,只有前进。

相关问题