【问题标题】:How can i rollback in Oracle我如何在 Oracle 中回滚
【发布时间】:2018-08-07 07:58:21
【问题描述】:

我想问一下关于 Oracle 事务的问题。

INSERT INTO HAR_DENEME (ID, NAME, SURNAME)
     VALUES (140, 'tt', 'AA');

UPDATE HAR_DENEME
   SET NAME = 'osman'
 WHERE ID = 500;---> there is no data ID=500;

如何回滚第一个查询。 谢谢。

【问题讨论】:

    标签: oracle plsql transactions


    【解决方案1】:

    您还可以添加保存点并回滚到保存点

    begin
      savepoint SP_INSERT;
    
      INSERT INTO HAR_DENEME (ID,NAME,SURNAME) VALUES(140,'tt','AA'); 
    
      update HAR_DENEME set NAME='osman' where ID=500;---> there is no data ID=500;
      if SQL%ROWCOUNT = 0 then
    
        rollback to savepoint SP_INSERT;
      end if;
    
    end;
    

    您可以检查更新的行数。如果没有什么要更新的,你可以回滚

    【讨论】:

    • 如果有类似 ıd=500 的数据,那么更新必须工作,如果没有,它怎么能做到这一点,谢谢
    • 谢谢兄弟,这对我来说意义重大
    • 如果查询选择或插入,我可以问另一个问题,我该如何进行回滚?
    • ì 如果您选择的行不存在,它将抛出 no_data_found 异常。您可以为此使用异常处理。
    • 插入错误怎么办?感谢您再次选择,我看到删除回滚像更新一样工作
    【解决方案2】:

    如果您的开发工具没有设置为自动提交(我希望不是),那么您可以执行简单的命令:

    rollback;
    

    【讨论】:

    • 我想在数据为空或找不到数据时回滚
    • 仍然插入:(
    • 更新和插入不会抛出 no_data_found 异常!
    • 谢谢@hotfix 我不记得xD 我会删除我答案的第二部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2013-01-07
    • 2020-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多