PL/SQL中savepoint和rollback的用法

先说一下这两个命令的用法格式:

--起一个名字为A的savepoion
savepoint A(这个A是savepoint的名字)
--跳转到savepoint A处
rollback to A
一旦执行了rollback那么savepoint的操作都将撤消,当然最后一定执行一次commit,否则所有的操作都是在缓存中进行的,不会真正的写入数据库中,写个例子

DECLARE
     v_number number;
BEGIN
     v_number := 1;
     insert into DEPT values(deptno_seq.nextval,v_number, '');
     savepoint A;
     insert into DEPT values(deptno_seq.nextval,v_number+1, '');
     savepoint B;
     insert into DEPT values(deptno_seq.nextval,v_number+2, '');
     savepoint C;
     rollback to A;
     --如果这行不加,那么数据并没有写入到数据库中,只是写到了缓存中,直接查询数据库是没有插入的值的
     commit;
END;
deptno_seq.nextval
这个是事先在数据中生成好的序列,代码为
CREATE SEQUENCE "SUCRE"."DEPTNO_SEQ" MINVALUE 1 MAXVALUE 1.00000000000000E+27 INCREMENT BY 10 START WITH 201 CACHE 20 NOORDER NOCYCLE ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值