oracle中有回滚,回滚用于撤销当前事务或者有问题的事务,利用rollback方法即可完成事务的回滚,语法为“rollback [隐式关键字] [to [savepoint] savepoint_name | force 'string'};”。
本教程操作环境:windows10系统、oracle 12c版、dell g3电脑。
oracle中有回滚吗一、概念
在 oracle 中,rollback 用法与 commit 相反,是用来 撤销 当前事务或有问题的事务。
1.1 语法
rollback [work] [to [savepoint] savepoint_name | force 'string'};
例如:
work - 可选。隐式关键字,可写可不写。
to savepoint savepoint_name - 可选。rollback 语句撤销当前会话的全部更改,直到由 savepoint_name 指定的保存点。若是省略该子句,则全部更改都将被撤销。
force 'string - 可选'。用于 强制回滚 可能已损坏或有问题的事务。使用此子句,能够将单引号中的 事务id 指定为 字符串。能够在 系统视图 中找到名为 dba_2pc_pengding、v$corrupt_xid_list 的事务标识(没法将有问题的事务回滚到保存点。)
1.1 数据准备
drop table stu; -- if existscreate table stu ( s_id number, s_xm varchar2(30));alter table stu add constraints pk_stu_id primary key(s_id);
二、savepoint
回滚到 最近 的 pointsql
declare begin insert into stu(s_id, s_xm) values(1, '小游子'); savepoint ps1; insert into stu(s_id, s_xm) values(2, '小优子'); savepoint ps2; -- 若也是 ps1,则回滚至此处(最近) insert into stu(s_id, s_xm) values(2, '小优子'); commit;exception when others then rollback to ps1; dbms_output.put_line(sqlcode ||' : '||sqlerrm); dbms_output.put_line(dbms_utility.format_error_backtrace);end;
运行结果:
推荐教程:《oracle视频教程》
以上就是oracle中有回滚吗的详细内容。