主要说下savepoint(设置保存点)和rollback to(回滚到) 。
该例子是在pl/sql中演示的,navicat的sql界面不支持savepoint和rollback语法。
基本语法:

savepoint a ;  # 设置保存点a
savepoint b ; # 设置保存点b
rollback to a ; # 回滚到a
commit ; # 提交

例子演示

准备工作

建表并插入数据(一条数据足矣):

CREATE TABLE T_USER (
"U_NAME" VARCHAR2(255 BYTE) ,
"U_SEX" VARCHAR2(255 BYTE) ,
"U_AGE" NUMBER ,
"ID" NUMBER
)
insert into t_user (U_NAME, U_SEX, U_AGE, ID)
values ('张三', '男', '18', '1');

过程sql

通过以下sql来模拟保存点和回滚:

select * from t_user; -- 开始的开始 18岁 踌躇满志

Savepoint a; -- a回滚点 18岁
update t_user set u_age ='30' where id='1'; -- 一事无成,已到中年


Savepoint b; -- b回滚点 30岁
update t_user set u_age ='50' where id='1'; -- 年过半百 仍旧一事无成 知天命了


Rollback To a; -- 心有不甘,重回18岁
rollback to b; -- 心有不甘,回到30岁
rollback; -- 人生太失败,全部回滚

commit; -- 算了,人生不可复制 就这样吧