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,只要在程序中开启一次就可以记录;
以我的理解,可以把事务看成一个监视器,开启事务就是开启监视器,然后
回滚的话,就中断了监视器,并且把监视到的内容返回去,比如下个订单,
下单成功,但是扣款失败,那么就会把下单成功的记录回滚回去,回到了没有下单时候的状态
提交事务,也就是关闭了监视器
当然,事务中断是不会终止程序运行的.它还会继续运行下去,所以得好好判断出错状态和回滚,提交位置

tp 事务处理的更多相关文章

  1. tp事务处理

    数据库事务处理见手册 逻辑事务处理 Model->startTrans(); // 开启事务 if(操作失败) { Model->rollback(); // 回滚 }else { Mod ...

  2. tp框架事务处理

    当我们需要同时对多个表进行操作的时候就有必要进行事务处理,首先你的数据库和数据表必须满足事务处理,即表引擎为InnoDB 下面为一个demo //事务:表必须是innodb    //删除主表$mod ...

  3. PHP系统声明式事务处理

    转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...

  4. Spring事务处理

    事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 数据库向用户提供保存当前程序状态的方法,叫事务提交(commit): ...

  5. INV 调试: 如何获取库存物料事务处理调试信息

     1. 按如下方式设置系统配置文件值: 系统配置文件值 地点/用户/应用/职责层配置文件值 --汇总 FND: 启用调试日志   是 FND:调试日志层级   陈述 INV: 调试跟踪: 是 IN ...

  6. tp未验证内容-9

    在tp的数据库配置中, convention.php中所有的选项都没有设置,要自己在Home/conf/config.php中自己设置, 注意几个地方,一是数据库的名字是: db_name,不是db_ ...

  7. TP基础

    一.目录结构 解压缩到web目录下面,可以看到初始的目录结构如下: www WEB部署目录(或者子目录)├─index.php 入口文件├─README.md README文件├─Applicatio ...

  8. In-Memory:内存优化表的事务处理

    内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...

  9. 读书笔记--SQL必知必会20--管理事务处理

    20.1 事务处理 使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性. 如果没有错误发生,整组语句提交给数据库表 ...

随机推荐

  1. spring study

    Dependency Injection The Inversion of Control(IoC) is a general concept, and it can be expressed in ...

  2. fetch err : "Body not allowed for GET or HEAD requests"

    在使用 fetch 的时候 报了  "Body not allowed for GET or HEAD requests" 这个错. 代码如下: 一番google , 找到答案了. ...

  3. 求int型数组和最大子数组 续

    之前的博文里已经实现过该程序的构思.编译.运行,本次就不再重复与之相雷同的内容. 题目:与别人借组,借助求int型数组最大和子数组的问题,考虑大数溢出和int取值范围的问题 要求: 调试程序  当子数 ...

  4. Beat(2/7)

    目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:beta冲刺(2/7) 团队部分 后敬甲(组长) 过去两天完成了哪些任务 整理博客 做了点商家数据表格 接下来的计划 做 ...

  5. 【动态规划】POJ-3176

    一.题目 Description The cows don't use actual bowling balls when they go bowling. They each take a numb ...

  6. 51单片机RAM 数据存储区学习笔记

    转自:http://www.eepw.com.cn/article/216237_2.htm 1.RAM keil C语言编程 RAM是程序运行中存放随机变量的数据空间.在keil中编写程序,如果当前 ...

  7. Nginx服务器搭建

    http://blog.csdn.net/molingduzun123/article/details/51850925 http://tengine.taobao.org/book/index.ht ...

  8. MongoDB中的数据导出为excel CSV 文件

    1.打开命令行,进入我们所安装的mongodb路径下的bin文件夹 2.我们采用bin文件夹下的mongoexport方法进行导出, mongoexport -d myDB -c user -f _i ...

  9. Alpha冲刺阶段博客汇总

    第一篇(冲刺前安排):http://www.cnblogs.com/Aragaki-Yui/p/8893752.html 第二篇(冲刺第一天):http://www.cnblogs.com/Araga ...

  10. Week3结对项目-数独游戏

    题目要求 1)在文章开头给出Github项目地址.(1') 2)在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间.(0.5') 3)看教科书和其它资料中关于Info ...