美文网首页
laravel - 跨库事务

laravel - 跨库事务

作者: lemon_jun | 来源:发表于2020-07-01 14:22 被阅读0次

    在平时工作中 很多时候会碰到 要求数据一致性的场景
    这个时候必不可少的 要应用到事务
    背景:
    朋友用laravel 在开发后台时发现开启事务后并没有生效
    在未经过commit() 数据依然存储到了数据库中
    查看文档,beginTransaction 不会自动提交
    最后他自己发现是跨库导致 在此做个记录

    1、laravel事务操作有两种可以选择
    1.1、自动 transaction 不需要担心回滚or提交

    示例:
     DB::transaction(function () {
        DB::table('users')->update(['votes' => 1]);
        DB::table('posts')->delete();
    });
    

    1.2、beginTransaction 手动提交or回滚

    DB::beginTransaction();开启事务
    DB::rollback(); 回滚
    DB::commit(); 提交
    

    2、跨库事务操作
    2.1、当你在框架中使用DB::beginTransaction(); 时,开启的是默认配置的数据库,如果想操作另外一个库 需要进行指定

    示例:
    DB::beginTransaction(); 开启默认数据库事务
    DB::connection('test')->beginTransaction(); 开启指定数据库事务
    
    //数据处理流程
    
    if(true)
    {
      //提交
      DB::commit();
      DB::connection('test')->commit();
    }else{
      //回滚
      DB::rollback();
      DB::connection('test')->rollback();
    }
    
    

    相关文章

      网友评论

          本文标题:laravel - 跨库事务

          本文链接:https://www.haomeiwen.com/subject/plwcqktx.html