事务transaction、oracle的事务:oracle11(跟着宝哥学java:oracle系列:全网最全):事务transaction、oracle的事务

/*
事务的sql:tcl transaction control language
关键字:commit rollback savepoint
事务:多个dml语句作为一个整体 同生共死
举例:张三给李四转账一百元

实现事务需要plsql块:
  begin
       要执行的代码1
       要执行的代码2
       commit;
       when others then
           捕获到异常时要执行的代码
           rollback;
 end;


*/
create table bank(
  bid int primary key,
  bname varchar(100),
  balance decimal(9,2) check(balance >=0)
);
insert into bank values(1,'张三',100);
insert into bank values(2,'李四',100);
insert into bank values(3,'王五',100);

update bank set balance=balance+100 where bname='李四';
update bank set balance=balance-100 where bname='张三';
select * from bank;
update bank set balance=100;

-- 把以上两个语句作为同一个事务  通过plsql实现
begin
  update bank set balance=balance+100 where bname='李四';
  update bank set balance=balance-100 where bname='张三';
  commit;
  exception
        when others then
        dbms_output.put_line('出错了!');
        rollback;
end;

-- savepoint:使用::把同一个事务的dml语句分成多块:某块的提交 不影响其他块的提交
--李四给王五转账100  张三给李四转账100

begin
  -- 李四给王五转账100
  update bank set balance=balance+100 where bname='王五';
  update bank set balance=balance-100 where bname='李四';
  savepoint aa;
  -- 张三给李四转账100
  update bank set balance=balance+100 where bname='李四';
  update bank set balance=balance-100 where bname='张三';
  commit;
  exception
        when others then
        dbms_output.put_line('出错了!');
        rollback to savepoint aa;
        dbms_output.put_line('事务回滚到aa位置处!');
        commit;
end;

--- 事务的四大特征
/*
   事务四大特征:ACID
   分别是原子性、一致性、隔离性、持久性。
    1、原子性(Atomicity)
          原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。
          *同一个事务关联的多个dml语句:要么都成功 要么都失败
    2、一致性(Consistency)
          一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例来说,假设用户A和用户B两者的钱加起来一共是1000,那么不管A和B之间如何转账、转几次账,事务结束后两个用户的钱相加起来应该还得是1000,这就是事务的一致性。
         *不管事务成功还是失败,事务执行前后的数据库整体状态必须一致
    3、隔离性(Isolation)
         隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到。
         *两个事务之间互相隔离 互不影响
    4、持久性(Durability)
       持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
*/


![在这里插入图片描述](https://img-blog.csdnimg.cn/178497645302450dbb99d51690dec6ca.png)



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值