zoukankan      html  css  js  c++  java
  • thinkphp事务机制

    thinkphp事务机制

    一、总结

    下面文章也要看,下面有抛出异常(自己提供错误信息那种)

    1、事务机制(原子性):所有的事情都完成了就提交,否则回滚。电商里面用的多,付钱买东西的时候

    2、样例(简单样例)开启事务,提交事务,删除事务,感觉下面的try-catch方式更专业

     // 开启事务

     1 Db::startTrans();
     2 
     3 
     4 
     5 // 删除数据 33
     6 
     7 $a=Db::table("user")->delete(33);
     8 
     9 // 删除数据 34
    10 
    11 $b=Db::table("user")->delete(34);
    12 
    13 
    14 
    15 // 判断条件
    16 
    17 if ($a && $b) {
    18 
    19          // 提交事务
    20 
    21          Db::commit();
    22 
    23 }else{
    24 
    25          // 回滚事务
    26 
    27          Db::rollback();
    28 
    29 }

    二、thinkphp事务机制

     1、事务

                       张三 银行卡 1000, 李四 银行卡 500, 张三给李四转账200

                       1) 银行 先扣除 张三的200

                       2) 银行 将200 给了李四

             2、mysql事务

                       mysql事务 要求 数据库的引擎必须 InnoDB

             3、使用

                       1、自动控制事务

                                Db::transaction(function(){

                                         // 删除一条数据

                                         Db::table("user")->delete(40);

                                         // 删除数据

                                         Db::table("user")->deletes();

                                });

                       2、手动控制事务 (***)

                                // 开启事务

                                Db::startTrans();

                                // 事务

                                try{

                                         // 删除数据id 31

                                         $a=Db::table("user")->delete(31);

                                         // 判断是否删除成功

                                         if (!$a) {

                                                   throw new Exception("删除id 31 数据没有成功");

                                         }

                                         // 删除不存在的数据 id 32

                                         $b=Db::table("user")->delete(32);

                                         // 判断是否删除成功

                                         if (!$b) {

                                                   throw new Exception("删除id 32 数据没有成功");

                                         }

                                         // 执行提交操作

                                         Db::commit();

                                }catch(Exception $e){

                                         // 回滚事务

                                         Db::rollback();

                                         // 获取提示信息

                                         dump($e->getMessage());

                                }

                       // ==================================================================

                                // 开启事务

                                Db::startTrans();

                                // 删除数据 33

                                $a=Db::table("user")->delete(33);

                                // 删除数据 34

                                $b=Db::table("user")->delete(34);

                                // 判断条件

                                if ($a && $b) {

                                         // 提交事务

                                         Db::commit();

                                }else{

                                         // 回滚事务

                                         Db::rollback();

                                }

  • 相关阅读:
    Python入门11 —— 基本数据类型的操作
    Win10安装7 —— 系统的优化
    Win10安装6 —— 系统的激活
    Win10安装5 —— 系统安装步骤
    Win10安装4 —— 通过BIOS进入PE
    Win10安装2 —— 版本的选择与下载
    Win10安装1 —— 引言与目录
    Win10安装3 —— U盘启动工具安装
    虚拟机 —— VMware Workstation15安装教程
    Python入门10 —— for循环
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9017242.html
Copyright © 2011-2022 走看看