码迷,mamicode.com
首页 > 其他好文 > 详细

事务控制语句

时间:2018-06-22 18:56:41      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:伪代码   str   部分   硬盘   短信   保留   value   账户   ...   

语法

commit; 提交(确认操作,写到硬盘上)
rollback;  回滚(回退)
savepoint; 保存点名
rollback  to ;   回滚(回退)到某个点

事务的四大特性

    transaction 事务(交易)

(是一组语句组成的主体)DML才有事务,select语句,DDL语句是没有的,它们一旦操作就自动提交

  • 原子性

事务中的语句是一个整体,要么一起成功,要么一起失败就像A转账到B对应的操作简单地看有:

update account set money=money-5000 
where ano/*账户名*/=’A’ ;

- - 这里不能提交,因为不能确保后面的会成功
- -执行状态保留为a

update account set money=money+5000 
where ano/*账户名*/=’B’ ;

- - 这两个操作要么一起成功,要么一起失败
- -执行状态保留为b

****伪代码:****
if(a&&b){
    commit;
}else{
    ollback;
}

淘宝上买东西和结账也是一样
  • 隔离性

当进行dml操作时,如果没有提交,那对另外一个事务而言数据是不可见的(自己可以看操作后的数据,并且给数据加了锁,不提交自己不能修改,别人也是看不见、不能修改的)

  • 持久性
  • 一致性

保存点  savepoint  保存点名

能打破原子性,允许部分成功,部分失败(大部分情况下要遵循原子性,但有的时候也有要突破的)

insert   /*发送短信*/
update
savepoint  shoufei  /*收费*/
insert   /*收到短信*/
- - 执行状态为c

insert  ...
if(!c){
rollback  to shoufei;
- - 到收费断点后面的语句全部不执行了
}
commit ;  /*一定会提交*/

 

查询一下表的现在的状态:

select * from empn;

技术分享图片

 

传入两个数据并保存点:

insert into empn values(2, niuniu, 2345678);

技术分享图片

 

回退到保存点a,存入的结果是存入一个数据:

rollback to a;
commit;
select * from empn;

技术分享图片

 

事务控制语句

标签:伪代码   str   部分   硬盘   短信   保留   value   账户   ...   

原文地址:https://www.cnblogs.com/cjaaron/p/9215023.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!