如何在Oracle中回滚

如何在Oracle中回滚,oracle,plsql,transactions,Oracle,Plsql,Transactions,我要问一下有关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; 如何回滚第一个查询。 谢谢。如果您的开发工具没有设置为自动提交(我希望不是),那么您可以执行以下简单命令: rollback; 您

我要问一下有关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;
如何回滚第一个查询。
谢谢。

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

rollback;

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

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;

您可以检查更新的行数。如果没有要更新的内容,您可以执行回滚操作

我想在数据为null或未找到时回滚仍然执行插入操作:(更新和插入不会抛出“没有找到数据”的例外!谢谢@hotfix我记不起来xD我会删除我答案的第二部分如果有像ıd=500这样的数据,那么更新必须工作,如果没有,怎么能做到这一点谢谢Hanks bro这对我来说意义重大如果查询选择或插入,我会问另一个问题,我怎么能做到回滚?如果您选择了一个不存在的行,它将抛出no_data_found异常。您可以使用异常处理。错误的插入如何?感谢再次选择,我看到删除回滚与更新一样工作