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,只要在程序中开启一次就可以记录;以我的理解,可以把事务看成一个监视器,开启事务就是开启监视器,然后回滚的话,就中断了监视器,并且把监视到的内容返回去,比如下个订单,下单成功,但是扣款失败,那么就会把下单成功的记录回滚回去,回到了没有下单时候的状态提交事务,也就是关闭了监视器当然,事务中断是不会终止程序运行的.它还会继续运行下去,所以得好好判断出错状态和回滚,提交位置tp 事务处理的更多相关文章
- tp事务处理
数据库事务处理见手册 逻辑事务处理 Model->startTrans(); // 开启事务 if(操作失败) { Model->rollback(); // 回滚 }else { Mod ...
- tp框架事务处理
当我们需要同时对多个表进行操作的时候就有必要进行事务处理,首先你的数据库和数据表必须满足事务处理,即表引擎为InnoDB 下面为一个demo //事务:表必须是innodb //删除主表$mod ...
- PHP系统声明式事务处理
转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...
- Spring事务处理
事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 数据库向用户提供保存当前程序状态的方法,叫事务提交(commit): ...
- INV 调试: 如何获取库存物料事务处理调试信息
1. 按如下方式设置系统配置文件值: 系统配置文件值 地点/用户/应用/职责层配置文件值 --汇总 FND: 启用调试日志 是 FND:调试日志层级 陈述 INV: 调试跟踪: 是 IN ...
- tp未验证内容-9
在tp的数据库配置中, convention.php中所有的选项都没有设置,要自己在Home/conf/config.php中自己设置, 注意几个地方,一是数据库的名字是: db_name,不是db_ ...
- TP基础
一.目录结构 解压缩到web目录下面,可以看到初始的目录结构如下: www WEB部署目录(或者子目录)├─index.php 入口文件├─README.md README文件├─Applicatio ...
- In-Memory:内存优化表的事务处理
内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...
- 读书笔记--SQL必知必会20--管理事务处理
20.1 事务处理 使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性. 如果没有错误发生,整组语句提交给数据库表 ...
随机推荐
- BugPhobia开发篇章:绩效管理的层次优化
0x00 :用0x00去书写一段故事 If you weeped for the missing sunset, you would miss all the shining stars 绩效管理,恐 ...
- JAVA第二次试验
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1352 姓名:潘俊洋 学号:20135230 成绩: 指导教师:娄嘉鹏 ...
- C#获取周一、周日的日期 函数类
#region 得到一周的周一和周日的日期 /// <summary> /// 计算本周的周一日期 /// </summary> ...
- Task 4.4二维环形数组求最大子矩阵之和
任务: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数 ...
- c++第七次作业____最后的总结
先言: 在这过程中学到: 第二次作业Github的使用 第四次作业计算器的计算 ps:表达式处理以及计算 第五次作业文件的处理问题 第六次作业界面的设计 总结: 1.这学期的计算器,做的有点匆忙,偶尔 ...
- 作业6 团队项目之需求 (NABCD模型)
N A B C D模型分析 WorkGroup:NewApps 组员:欧其锋(201306114305 http://www.cnblogs.com/ouqifeng/) 吕日荣(20130611 ...
- 【CS231N】5、神经网络静态部分:数据预处理等
一.疑问 二.知识点 1. 白化 白化操作的输入是特征基准上的数据,然后对每个维度除以其特征值来对数值范围进行归一化.该变换的几何解释是:如果数据服从多变量的高斯分布,那么经过白化后,数据的分布将 ...
- 实现二叉树(search)
★实验任务 可怜的 Bibi 刚刚回到家,就发现自己的手机丢了,现在他决定回头去搜索 自己的手机. 现在我们假设 Bibi 的家位于一棵二叉树的根部.在 Bibi 的心中,每个节点 都有一个权值 x, ...
- 用windbg检查.NET线程池设置
比如我们在machine.config中进行了这样的设置(8核CPU): <processModel maxWorkerThreads="100" maxIoThreads= ...
- [转帖]脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么?
脑残式网络编程入门(二):我们在读写Socket时,究竟在读写什么? http://www.52im.net/thread-1732-1-1.html 1.引言 本文接上篇<脑残式网 ...