我正在学习Oracle SQL,在执行DELETE
命令之后,我尝试执行ROLLBACK
。问题是我再次错误地按了F9键,ROLLBACK
又跑了一次。现在,它已从表格中删除了我所有的INSERT
,我不知道该如何找回它们。
我尝试再次插入相同的查询,但是PK
(主键)出现问题。另外,我无法删除该表以重新开始,因为我还有其他与此表结合使用的FK
(外键)表。
答案 0 :(得分:3)
不幸的是,您无法撤消ROLLBACK
,就像无法撤消COMMIT
一样。这是设计使然。
您进行ROLLBACK
时会发生什么,就是直到该点之前所有未提交的更改都将丢失。如果两次调用之间未执行任何更改,则两次调用ROLLBACK
无效。
所以问题是:在运行COMMIT
之前,您INSERT
是DELETE
吗?
如果是:ROLLBACK
刚刚恢复了DELETE
命令,那么您的INSERT
s应该不会丢失
如果否:ROLLBACK
也还原了INSERT
s
在两种情况下,您呼叫ROLLBACK
一次还是两次都没有关系。
答案 1 :(得分:0)
您不能撤消回滚。回滚不是“撤消”,因此没有“重做”。是“把这些变化扔掉,我不想要”
我建议您从第二个问题开始,解释您的意思:“主键PK出现问题。” 并寻求帮助。
没有退路,只有前进。