ThinkPHP5 模型 - 事务支持
2024-10-14 20:24:12
使用事务之前,先确保数据库的存储引擎支持事务操作。
- 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模型---事务支持
最新文章
- C# winform 安装程序打包(自定义操作)
- [I2C]I2C架构分析
- 用 python实现简单EXCEL数据统计
- CocoaPods Podfile 文件写法有讲究
- mysql的text类型长度问题
- WCF学习心得--客户端获取服务端自定义类数据
- python sqlite3使用
- javaweb 登录注册
- c语言 列出系统进程
- 记录下扣jio的2018年
- 如何提高sql查询速度
- salt-api配置安装 以及使用
- 推荐5款简洁美观的Hexo主题
- Docker三剑客之Docker Machine
- 解决IE下select option不支持display none样式
- SSH整合 第三篇 Spring的加入
- 【转】目标检测之YOLO系列详解
- [EXCEL] 不能清除剪贴板: We couldn&#39;t free up space on the clipboard. Another program might be using it right now
- Beta阶段——3
- BZOJ 2179 FFT快速傅立叶 题解
热门文章
- sql语句中的insert 和 insert into 的区别?into有什么用?
- 关于 [lambda x: x*i for i in range(4)] 理解
- Elasticsearch query和filter的区别
- C# 类反射创建对象实例
- P2805 [NOI2009]植物大战僵尸(最小割+拓扑排序)
- [Leetcode] Construct binary tree from preorder and inorder travesal 利用前序和中续遍历构造二叉树
- 直通BAT面试算法精讲课2
- Linux之根文件系统的构建20160611
- linux 下文件重命名/移动/复制命令(转)
- FileProvider记录下