zoukankan      html  css  js  c++  java
  • 事务控制语句

    语法

    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;

  • 相关阅读:
    爱情戒指
    李小龙
    20分钟
    大话JAVA(二)
    编程高手
    Free Computer Books, Free eBooks and Read Free Books Online
    (06) [修正版] 判断整数序列是不是二元查找树的后序遍历结果
    [原创]DateTime在使用 format Custom Date and Time Format Strings时遇到的问题和解决方法
    [原创]00:矩形算法题二分法的扩展(2分法 * 2分法)
    用堆栈和用递归分别实现倒序打印
  • 原文地址:https://www.cnblogs.com/cjaaron/p/9215023.html
Copyright © 2011-2022 走看看