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. Node.js中module文件定义的top-level变量为何是私有的

    在Node.js中,module文件里面使用var,const或者let定义的top-level变量为何是私有的,只能在这个模块文件中使用呢? 原因就是,在模块文件中的内容执行之前,node.js会降 ...

  2. (第十周)Beta-2阶段成员贡献分

    项目名:食物链教学工具 组名:奋斗吧兄弟 组长:黄兴 组员:李俞寰.杜桥.栾骄阳.王东涵 个人贡献分=基础分+表现分 基础分=5*5*0.5/5=2.5 成员得分如下: 成员 基础分 表现分 个人贡献 ...

  3. 信息安全系统设计基础_exp1

    北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础 班级:1353 姓名:吴子怡.郑伟 学号:20135313.20135322 指导教师: 娄嘉鹏 实验 ...

  4. Spring笔记②--各种属性注入

    Ioc 反转控制 反转资源获取的方向 分离接口与实现 采用工厂模式 采用反转控制   Di 依赖注入 依赖容器把资源注入   配置bean 通过全类名(反射) 配置形式:基于xml方式 Ioc容器的b ...

  5. ASP.net四则运算《《《策略模式

    Calculator.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; / ...

  6. java List.get

    并不能 用如果List在i位置值不存在 并不能 List.get(i) !=null 判断 会抛异常 版权声明:本文为博主原创文章,未经博主允许不得转载.

  7. JS实现前端将数据导出excel

    点击此跳到原文,原文有效果动图. 方法一 将table标签,包括tr.td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但 ...

  8. nginx使用“sudo service nginx start”启动报错解决方案

    下载nginx的启动脚本: # wget -O init-deb.sh http://library.linode.com/assets/660-init-deb.sh 将脚本添加到init.d目录和 ...

  9. 继《在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib》修订

    在之前的<在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib>中有些问题,后来由于时间不是很充足,故现在对其中的问题进行完善,如下所示对红色框框中的相应的 ...

  10. 复利计算测试(C语言)

    对我们和复利计算程序,写单元测试. 有哪些场景? 期待的返回值 写测试程序. 运行测试. 测试模块 测试输入 预期结果 运行结果 bug跟踪 计算终值 (本金,年限,利率) 终值     1 (100 ...