oracle事务块,【Oracle】PL/SQL块中使用事务

目录1.理论部分

2.事务案例1

3.事务案例2

1.理论部分

事务会把表示工作逻辑单元的SQL语句集成起来。

(1)commit

当数据库提交COMMIT语句的时候,这个事务就结束了,并且如下结果会发生:

事务所做的所有工作都会永久化

其他用户可以看到这个事务所做的数据变更

该事务拥有的所有锁被释放

commit语句的语法如下:

COMMIT [WORK];

(2)rollback

当ROLLBACK语句提交到数据库时,这个事务就结束了,并且会出现以下结果:

该事务所做的所有工作都被撤销,就像没有执行过这个事务一样。

该事务拥有的所有锁被释放

rollback语句的语法如下:

ROLLBACK [WORK];

(3)savepoint

使用savepoint命令,可以实现只有事务的部分工作被撤销。

savepoint语句的语法如下:

SAVEPOINT name;

一般配合rollback语句来使用,语法如下:

ROLLBACK [wowk] to SAVEPOINT name;

当ROLLBACK to SAVEPOINT name提交到数据库时,就会出现如下结果:

从SAVEPOINT起所有工作被撤销。但是,SAVEPOINT仍然是活跃的,直到执行完COMMIT或者是ROLLBACK,在需要的时候,可以再次回滚。

从SAVEPOINT以来SQL语句所拥有的的所有锁和资源被释放。

事务没结束,因为SQL语句还没有最终结束。

2.事务案例1

create table cust_info(id number,name Varchar2(40) ,constraint p_cust_info primary key(id));

insert into cust_info values(1,‘Jack‘);

insert into cust_info values(2,‘Logan‘);

insert into cust_info values(3,‘Oliver‘);

commit;

declare

begin

insert into cust_info values(5,‘张三‘);

SAVEPOINT A;

insert into cust_info values(6,‘李四‘);

SAVEPOINT B;

insert into cust_info values(7,‘王五‘);

SAVEPOINT C;

insert into cust_info values(8,‘周六‘);

SAVEPOINT D;

ROLLBACK TO SAVEPOINT B;

end;

当执行完上述的PL/SQL语句后,再执行

select * from cust_info

我们可以看到只存在id为5,6的两条记录。

3.事务案例2

DECLARE

v_Counter NUMBER;

BEGIN

v_Counter := 0;

for i IN 1..100

LOOP

v_Counter := v_Counter + 1;

IF v_Counter = 10

THEN

COMMIT;

dbms_output.put_line(v_Counter);

v_Counter := 0;

END IF;

END LOOP;

END;

上述案例的执行结果是:

10

10

10

10

10

10

10

10

10

10

表示整个PL/SQL块中有10个事务。

【Oracle】PL/SQL块中使用事务

标签:live   lang   就会   acl   释放   log   primary   数据   其他

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉 本文系统来源:https://www.cnblogs.com/OliverQin/p/12964296.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值