ThinkPHP5 模型 - 事务支持
使用事务之前,先确保数据库的存储引擎支持事务操作。
- MyISAM:不支持事务,主要用于读数据提高性能
- InnoDB:支持事务、行级锁和并发
- Berkeley DB:支持事务
ThinkPHP5 使用事务有 3 个常用方法:
$model->startTrans(); // 开启事务
$model->rollback(); // 事务回滚
$model->commit(); // 提交事务
小例子:
<?php
/**
* 事务测试
*/
public function transaction()
{
$modelA = model('A');
$modelA->startTrans(); // 开启事务A
$result = $modelA->save($data1);
if($result === false){
$modelA->rollBack(); // 事务A回滚
$this->error('添加A信息失败,请重试');
} $modelB = model('B');
$modelB->startTrans(); // 开启事务B
$result = $modelB->save($data2);
if($result === false){
$modelB->rollBack(); // 事务B回滚
$modelA->rollBack(); // 事务A回滚
$this->error('添加B信息失败,请重试');
} $modelC = model('C');
$modelC->startTrans(); // 开启事务C
$result = $modelC->save($data3);
if($result === false){
$modelC->rollBack(); // 事务C回滚
$modelB->rollBack(); // 事务B回滚
$modelA->rollBack(); // 事务A回滚
$this->error('添加C信息失败,请重试');
} // 提交事务
$modelC->commit();
$modelB->commit();
$modelA->commit(); $this->success('添加成功', url('admin/index/add'));
}
参考链接:tp3模型的事务支持:TP模型---事务支持
ThinkPHP5 模型 - 事务支持的更多相关文章
- 深入理解Spring Redis的使用 (二)、RedisTemplate事务支持、序列化
RedisTemplate api详解 1. RedisTemplate的事务 private boolean enableTransactionSupport = false; private bo ...
- springboot开启事务支持时报代理错误
问题:The bean 'xxx' could not be injected as a 'com.github.service.xx' because it is a JDK dynamic pro ...
- spring对事务支持的三种形式
spring对事务支持的三种形式: 1.通过spring配置文件进行切面配置 <bean id="***Manager" class="org.springfram ...
- JDBC 学习笔记(十一)—— JDBC 的事务支持
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
- mycat的事务支持情况
中秋国庆一共12天,玩的有点嗨,完全没想工作的事情- -.回来赶紧补补.看了一下mycat关于事务的支持情况,做一下记录. 说mycat的事务支持之前,先说说XA协议,即分布式事务.指的是TM(事务管 ...
- SQL引擎及事务支持
查看当前表引擎 SHOW CREATE TABLE table_name MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是性能,其执行数度比InnoDB类 ...
- Spring Redis开启事务支持错误用法导致服务不可用
1.事故背景 在APP访问服务器接口时需要从redis中获取token进行校验,服务器上线后发现一开始可以正常访问,但只要短时间内请求量增长服务则无法响应 2.排查流程 (1)使用top指令查看C ...
- Spring框架事务支持模型的优势
全局事务 全局事务支持对多个事务性资源的操作,通常是关系型数据库和消息队列.应用服务器通过JTA管理全局性事务,API非常烦琐.UserTransaction通常需要从JNDI获取,意味着需要与JND ...
- TP5 模型事务操作
注意:数据只要涉及多表一致性操作,必须要开启数据库事务操作 ThinkPHP5 中模型层中使用事务: try{ $this->startTrans(); $this->data($orde ...
随机推荐
- 判断IP地址是否在指定范围内的方法
比如给定一个ip段:127.0.0.1 ~ 127.0.0.255,我们想判断一个给定的ip地址是否在此段内,可以先将ip地址转换成整数,然后整数比较大小就很容易了. 例如: 127.0.0.1 = ...
- Ip合并
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.Fi ...
- bzoj4031-小Z的房间
题目 给一个\(n\*m\)的矩阵,每个点可能为"."或"*",有多少种方法把矩阵中的点全部连接起来,并且每两个点之间只有一条路径. 分析 题目所求的是一个矩阵 ...
- POJ 3261 Milk Patterns (后缀数组,求可重叠的k次最长重复子串)
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 16742 Accepted: 7390 Ca ...
- BZOJ4890 & 洛谷3761:[TJOI2017]城市——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4890 https://www.luogu.org/problemnew/show/P3761 从加 ...
- 弱校的ACM奋斗史
这是一篇老文章,不过由于无法找到最初的发文地址,这里就不能粘贴原文网址了.本站转载此文与ACMer们共勉.感谢acmerfight供稿. 题解:还记得2年前的一个晚上,我和一个女孩一起写完了这篇文章. ...
- bzoj2761: [JLOI2011]不重复数字(hash)
题目大意:给出N个数,要求把其中重复的去掉,只保留第一次出现的数.例如,给出的数为1 2 18 3 3 19 2 3 6 5 4,其中2和3有重复,去除后的结果为1 2 18 3 19 6 5 4. ...
- [CQOI2017]小Q的表格——反演好题
zhoutb2333的题解 难得一见的新颖反演题. 一眼看可能不是反演题. 修改影响别的,很恶心. 所以考虑化简f的联系式,发现和gcd有关 于是考虑用gcd来表示所有的gcd(a,b)=g的所有f( ...
- apache出现You don't have permission to access / on this server. 提示
今天在新的linux上跑原来的代码,使用的虚拟主机的模式进行操作.几个相关的网站放在一个文件里,想法是通过网站列出的目录进行相应的网站进行操作.一切设置完成后,在浏览器中运行出现在You don't ...
- XOR and Favorite Number (莫对算法)
E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...