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.hqwc.cn/news/66356.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ORB-SLAM2学习笔记7之System主类和多线程

文章目录 0 引言1 整体框架1.1 整体流程 2 System主类2.1 成员函数2.2 成员变量 3 多线程3.1 ORB-SLAM2中的多线程3.2 加锁 0 引言 ORB-SLAM2是一种基于特征的视觉SLAM(Simultaneous Localization and Mapping)系统,它能够从单个、双目或RBG…

K8S系列二:实战入门

I. 配置kubectl 1.1 什么是kubectl? 官方文档中介绍kubectl是: Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令。Kubectl的配置文件在$HOME/.kube目录。我们可以通过设置KUBECONFIG环境变量或设置命令参数–kubeconfig来指定其他…

优雅地处理RabbitMQ中的消息丢失

目录 一、异常处理 二、消息重试机制 三、错误日志记录 四、死信队列 五、监控与告警 优雅地处理RabbitMQ中的消息丢失对于构建可靠的消息系统至关重要。下面将介绍一些优雅处理消息丢失的方案,包括异常处理、重试机制、错误日志记录、死信队列和监控告警等。…

分布式系统的 38 个知识点

天天说分布式分布式,那么我们是否知道什么是分布式,分布式会遇到什么问题,有哪些理论支撑,有哪些经典的应对方案,业界是如何设计并保证分布式系统的高可用呢? 1. 架构设计 这一节将从一些经典的开源系统架…

wsl没有响应,wsl启动失败,docker启动失败

wsl的相关问题记录和解决 问题一:cmd命令窗口输入wsl后没有响应,会卡住,类似如图 排查: 输入 wsl -l -v看是否有东西输出;我的电脑没有东西输出,依旧是卡住;有内容请重启试试从开始菜单打开,点…

[保研/考研机试] KY80 进制转换 北京大学复试上机题 C++实现

题目链接: KY80 进制转换https://www.nowcoder.com/share/jump/437195121691735660774 描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串(注意可能存在的一个测试用例里的多组数据)。 输入描述: 输…

Maven 基础学习及使用

Maven1 Maven简介1.1 Maven模型1.2 仓库 2 Maven安装配置3 Maven基本使用3.1 Maven 常用命令3.2 Maven 生命周期 4 IDEA使用Maven4.1 IDEA配置Maven环境4.2 Maven 坐标详解4.3 IDEA 创建 Maven项目4.4 IDEA 导入 Maven项目 5 依赖管理5.1 使用坐标引入jar包5.2 依赖范围 Maven …

pytest的fixture梳理

fixture特性 可以重复使用,多个用例可以使用同一个fixture一个测试用例可以使用多个装置 import pytest # Arrange pytest.fixture def first_entry():return "a"# Arrange pytest.fixture def second_entry():return 2# Arrange pytest.fixture def or…

vscode搭建c语言环境问题

c语言环境搭建参考文章:【C语言初级阶段学习1】使用vscode运行C语言,vscode配置环境超详细过程(包括安装vscode和MinGW-W64安装及后续配置使用的详细过程,vscode用户代码片段的使用)[考研专用]_QAQshift的博客-CSDN博客 问题如下:…

FPGA外部触发信号毛刺产生及滤波

1、背景 最近在某个项目中,遇到输入给FPGA管脚的外部触发信号因为有毛刺产生,导致FPGA接收到的外部触发信号数量多于实际值。比如:用某个信号源产生1000个外部触发信号(上升沿触发方式)给到FPGA输入IO,实际…

工作:MODBUS通讯协议知识

工作:MODBUS通讯协议知识 一、Modbus三种通讯分类 Modbus TCP/IP 使用网口通讯,更多是用于快速网络设备,如机器人,上位机视觉。 Modbus RTU 使用RS232或者RS485/RS422接口,通讯方式是串口通讯,是直接传输…

《论文阅读13》Efficient Urban-scale Point Clouds Segmentationwith BEV Projection

一、论文 研究领域: 城市级3D语义分割论文:Efficient Urban-scale Point Clouds Segmentationwith BEV Projection清华大学,新疆大学2021.9.19论文github论文链接 二、论文概要 2.1主要思路 提出了城市级3D语义分割新的方法,将…