如何在Oracle中回滚
我要问一下有关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; 您
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异常。您可以使用异常处理。错误的插入如何?感谢再次选择,我看到删除回滚与更新一样工作