zoukankan      html  css  js  c++  java
  • tp5.1--数据库事务操作

    https://blog.csdn.net/qq_42176520/article/details/88708395

    使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。

    最简单的方式是使用 transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚,例如:

    1.  
      Db::transaction(function () {
    2.  
      Db::table('think_user')->find(1);
    3.  
      Db::table('think_user')->delete(1);
    4.  
      });

    也可以手动控制事务,例如:

    1.  
      // 启动事务
    2.  
      Db::startTrans();
    3.  
      try {
    4.  
      Db::table('think_user')->find(1);
    5.  
      Db::table('think_user')->delete(1);
    6.  
      // 提交事务
    7.  
      Db::commit();
    8.  
      } catch (Exception $e) {
    9.  
      // 回滚事务
    10.  
      Db::rollback();
    11.  
      }

    注意在事务操作的时候,确保你的数据库连接使用的是同一个。

    V5.1.13+版本开始,可以支持MySQL的XA事务用于实现全局(分布式)事务,你可以使用:

    1.  
      Db::transactionXa(function () {
    2.  
      Db::connect('db1')->table('think_user')->delete(1);
    3.  
      Db::connect('db2')->table('think_user')->delete(1);
    4.  
      }, [Db::connect('db1'),Db::connect('db2')]);

    要确保你的数据表引擎为InnoDB,并且开启XA事务支持。

  • 相关阅读:
    java常见异常
    实现两个整数变量交换
    java抽象类与接口
    Java内部类用法
    单例模式
    easyUI下拉列表点击事件的使用
    Java中使用HttpRequest获取用户真实IP地址端口
    js-easyUI格式化时间
    1124
    ACM算法
  • 原文地址:https://www.cnblogs.com/flzs/p/12143326.html
Copyright © 2011-2022 走看看