【问题标题】:How can I rollback insert statements after commit in oracle? [duplicate]在 oracle 中提交后如何回滚插入语句? [复制]
【发布时间】:2016-12-14 16:31:24
【问题描述】:

让我重新解释一下。我是oracle新手,我尝试在线搜索没有成功。谁能告诉我在oracle数据库中提交Insert语句后如何创建回滚脚本?注意,我有还没有提交插入语句。我只是想要备份回滚脚本,以防在生产环境中插入和提交语句之后发生任何事情。

【问题讨论】:

  • 你已经提交了事务,这是结束事务的标志,除非你回滚整个数据库,否则无法回滚已提交的内容
  • @LONG,我还没有提交,我只是想要回滚备份脚本,以防插入语句后发生任何事情
  • 如果它们都是插入,那么它们的“回滚”将只是一个匹配删除的集合 - 不是吗?
  • 你有保存点吗?如果是这样,您可以通过ROLLBACK TO SAVEPOINT [name of savepoint] 回滚您的工作
  • @LONG 我没有保存点。你能用更多代码解释一下吗?

标签: sql oracle


【解决方案1】:

示例

begin
statement;
   savepoint savepoint1;
   begin
      your insert statement
   exception
       when others then
      rollback to savepoint1;
  end;
      ROLLBACK TO savepoint1;
end;

【讨论】:

  • 很高兴我能帮助@Danny
【解决方案2】:

如果您还没有COMMIT;ed,那么您只需ROLLBACK;

如果您想要更大的控制权,那么您可以在整个事务中创建保存点:

SAVEPOINT before_inserts;

然后回滚到保存点:

ROLLBACK TO before_inserts;

如果您不幸在提交工作时发现了错误,您可以使用闪回查询将表和/或数据库恢复到以前的状态。

【讨论】:

  • 谢谢哨兵
猜你喜欢
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 2020-07-22
  • 1970-01-01
  • 2021-07-31
相关资源
最近更新 更多