主要说下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; -- 算了,人生不可复制 就这样吧