当前位置: 首页 > news >正文

tp5中的事务处理

使用事务首先要数据库支持事务;
如下MySQL数据库user表开启事务支持,即设计表->引擎设置为InnoDB->保存
在这里插入图片描述

事务处理
1. 数据库的表引擎需要是 InnoDB 才可以使用,如果不是调整即可;
2. 事务处理,需要执行多个 SQL 查询,数据是关联恒定的;
3. 如果成功一条查询,改变了数据,而后一条失败,则前面的数据回滚;
4. 比如:蜡笔小新给路飞 3 快钱,自己-3,对方+3,这时需要事务处理;
5. 系统提供了两种事务处理的方式,第一种是自动处理,出错自动回滚;
Db::transaction(function () {Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price - 3')]);Db::name('user1')->where('id', 20)->save(['price'=>Db::raw('price + 3')]);
});
=========事务回调函数内部给外部变量赋值=======方便操作后根据结果做判断
public function trans(){$res1=0;$res2=0;$res=[];Db::transaction(function ()use(&$res,&$res1,&$res2){$res1=Db::table('user')->where(['name'=>'qc'])->setDec('age',2);$res2=Db::table('user')->where(['name'=>'qzy'])->setInc('age',2);$res=Db::table('user')->where(['name'=>'qc'])->find();});if($res1&$res2){dump($res1);dump($res2);dump($res);}return 123;
}6. 手动处理,基本和原生处理类似,可以自行输出错误信息;
//启动事务
Db::startTrans();
try {Db::name('user')->where('id', 19)->save(['price'=>Db::raw('price - 3')]);Db::name('user1')->where('id', 20)->save(['price'=>Db::raw('price + 3')]);//提交事务Db::commit();
} catch (\Exception $e) {echo '执行 SQL 失败!';//回滚Db::rollback();
}
http://www.lryc.cn/news/120272.html

相关文章:

  • 论文总结《Towards Evaluating the Robustness of Neural Networks(CW)》
  • 2024重庆邮电大学软件工程809题库(带答案)
  • 三种目标检测方法(基于传统数字图像处理的识别方法、基于传统机器学习的识别方法和基于深度学习的识别方法)的区别
  • 制造业为什么要建设数字化供应链
  • webrtc Thread 和 TaskQueue 的 应用和思考
  • 无涯教程-Perl - pos函数
  • 【腾讯云 Cloud Studio 实战训练营】使用Cloud Studio构建Java、Python项目
  • Java的Class类:每一个类都对应着一个Class对象
  • JavaScript预编译机制
  • 【ARM 嵌入式 编译系列 4.1 -- GCC 编译属性 likely与unlikely 学习】
  • 《算法竞赛·快冲300题》每日一题:“造电梯”
  • NSS [MoeCTF 2022]baby_file
  • 喜报!诚恒科技与赛时达科技达成BI金蝶云星空项目合作
  • Vscode python调试和运行环境设置
  • lua中执行luci.sys.call、luci.sys.exec、os.execute的区别
  • Python-OpenCV中的图像处理-模板匹配
  • 模拟队列(c++题解)
  • Redis_哨兵模式
  • Mysql中如果建立了索引,索引所占的空间随着数据量增长而变大,这样无论写入还是查询,性能都会有所下降,怎么处理?
  • MySQL 约束
  • unity实现角色体力功能【体力条+体力计算】
  • 【深度学习所有损失函数】在 NumPy、TensorFlow 和 PyTorch 中实现(1/2)
  • 七夕好物分享,哪些礼物适合送男/女朋友?这几款好物最为合适!
  • C语言学习系列-->看淡指针(2)
  • Java基础篇--Character 类
  • Flutter参考资料
  • sed命令如何正确修改ini配置文件
  • 【新版系统架构补充】-信息系统基础知识
  • 安防监控视频汇聚平台EasyCVR分发的FLV视频流在VLC中无法播放是什么原因?
  • 前端遇到的面试题