首页 > 解决方案 > 如何在sql中撤消ROLLBACK?

问题描述

我正在学习 Oracle SQL,并且在执行DELETE命令后我尝试执行ROLLBACK. 问题是我第二次按错F9,ROLLBACK又跑了。现在它已经INSERT从表中删除了我的所有 s,我不知道如何才能将它们取回。

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

标签: sqloracletransactions

解决方案


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

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

所以问题是:在运行你的之前你是你的COMMIT吗?INSERTDELETE

  • 如果是:ROLLBACK刚刚恢复的DELETE命令,你INSERT的 s 不应该丢失

  • 如果否:ROLLBACK恢复的也是INSERTs

ROLLBACK在这两种情况下,您调用一次或两次都没有关系。


推荐阅读