tp框架事务处理实例和理解

简介: tp框架事务处理实例和理解
tp的事务开启是非常简单的,
只需要M()->startTrans();//开启事务,M()可以是M('xxx')
$m->rollback();//事务回滚
$m->commit();//提交事务
下面是我代码实例;
$order_model = M('order');
    $order_model ->startTrans();//开启事务
   $id = $order_model->add($data);//增加一条订单记录
   if (!$id) {
        $result['status'] = false;
        $result['info'] = '增加订单时出错了!';
        //如果增加失败,则回滚
        $order_model->rollback();
        return $result;
    }
    //获取详细数据
    $detail = get_detail($id);//获取订单详细信息
    $order_detail_model = M('order_detail');
    foreach ($detail as $k) {
        if (!$order_detail_model->add($k)) {
            //如果插入订单详细信息错误,则回滚
            $order_model->rollback();
            $result['status'] = false;
            $result['info'] = '处理详细信息时出错了!';
            return $result;
        };
    }
    //全部完成,则提交
    $order_model->commit();
    $result['status'] = true;
    return $result;
}
mysql事务,数据表类型需要是innodb,只要在程序中开启一次就可以记录;
以我的理解,可以把事务看成一个监视器,开启事务就是开启监视器,然后
回滚的话,就中断了监视器,并且把监视到的内容返回去,比如下个订单,
下单成功,但是扣款失败,那么就会把下单成功的记录回滚回去,回到了没有下单时候的状态
提交事务,也就是关闭了监视器
当然,事务中断是不会终止程序运行的.它还会继续运行下去,所以得好好判断出错状态和回滚,提交位置
目录
相关文章
|
7月前
|
架构师 数据库
深入探讨分布式事务:解析跨多个数据库的一致性
在现代应用程序中,分布式系统已经变得越来越普遍,但同时也带来了一系列的挑战。其中之一就是分布式事务管理,它涉及到在多个数据库或服务之间保持一致性和可靠性。本文将深入介绍分布式事务的概念,探讨不同的实现方式以及它们的优缺点。无论您是开发人员、系统管理员还是系统架构师,了解分布式事务是构建稳健分布式系统的关键一步。
|
1月前
|
缓存 NoSQL 关系型数据库
|
9月前
|
关系型数据库 MySQL 数据库
MySQL数据库事务的概念和应用场景
MySQL数据库事务的概念和应用场景
|
5月前
|
数据库
fastadmin框架如何开启事务
引言: 数据库事务是一种重要的概念,它确保了一组数据库操作要么全部成功,要么全部失败,以保持数据的一致性。FastAdmin框架提供了方便的方式来处理数据库事务,本文将向你展示如何使用它来开启、提交和回滚事务。
44 1
|
6月前
|
SQL 关系型数据库 MySQL
数据库的锁——代码实战篇
数据库的锁——代码实战篇
|
10月前
|
关系型数据库 MySQL Java
多数据源事务处理-涉及分布式事务
多数据源事务处理-涉及分布式事务
111 0
|
11月前
|
大数据 数据库 开发者
大数据开发基础的数据库基础的事务/隔离级别/并发/索引等重要机制
在大数据开发中,数据库的事务、隔离级别、并发和索引等机制是非常重要的。这些机制可以帮助我们更好地管理和处理大量的数据,提高数据库的性能和可靠性。以下是这些机制的简要介绍。
76 0
|
关系型数据库 MySQL PHP
MySQL事务的四种隔离类型以及PHP框架Yii2中的源码解读和实际应用
MySQL事务的四种隔离类型以及PHP框架Yii2中的源码解读和实际应用
270 0
|
安全 Oracle 关系型数据库
事务管理、事务特性、数据库并发访问问题、事务应用【转账】
事务管理、事务特性、数据库并发访问问题、事务应用【转账】
113 0
事务管理、事务特性、数据库并发访问问题、事务应用【转账】
|
消息中间件 缓存 NoSQL
缓存与数据库一致性问题深度剖析
本篇文章是我之前系列文章中的一篇,主要讨论了我们在平时的开发过程中,各大系统中都要用到的缓存数据的问题,进一步延伸到数据库和缓存的双写一致性问题,并且给出了所有方案的实现代码方便大家参考。
396 0