zoukankan      html  css  js  c++  java
  • TP5之事务处理

    事务: 执行完A事件然后执行B事件,AB事件都执行完才算完成。可是有时候由于某些因素,A事件执行完,还没来得及执行B事件。怎么办?就需要回到A事件执行前。这种事情多见于电商支付功能。
    mysql事务要求数据库引擎必须是innoDB

    自动控制事务处理:

    public function delete(){
    //由于第二条语句写的有问题,只执行第一条
    Db::table('user')->delete(1038);
    Db::table('user')->deletesssssss(1039);

    //由于第二条写的有问题,两条删除都不执行
    Db::transaction(function(){
    Db::table('user')->delete(1040);
    Db::table('user')->deletesssssss(1041);
    });
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    手动控制事务

    public function delete(){
    // 启动事务
    Db::startTrans();
    try{
    $res=Db::table('user')->delete(1039);
    if(!$res){
    throw new Exception('删除失败');
    }else{
    throw new Exception('删除成功');
    }
    // 提交事务
    Db::commit();
    } catch (Exception $e) {
    dump($e->getMessage());
    // 回滚事务
    Db::rollback();
    //注意:我们做了回滚处理,所以id为1039的数据还在
    }
    }

  • 相关阅读:
    CentOS 7搭建vsftp服务
    Istio
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    Kubernetes
    11.树的抽象数据类型和几种表示法
  • 原文地址:https://www.cnblogs.com/daochong/p/9958660.html
Copyright © 2011-2022 走看看