tp5中的事务处理

news2024/12/23 17:14:43

使用事务首先要数据库支持事务;
如下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.coloradmin.cn/o/866342.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s之StorageClass(NFS)

一、前言 1、环境 k8s v1.23.5 ,服务器是centos7.9 192.168.164.20 k8s-master1 192.168.164.30 k8s-node1 192.168.164.40 k8s-node2 2、貌似storageClass在kubernetes v1.20就被砍了。 因为它比较慢,而且耗资源,但可以通过不同的实现镜…

3.1 Spring MVC概述

1. MVC概念 MVC是一种编程思想,它将应用分为模型(Model)、视图(View)、控制器(Controller)三个层次,这三部分以最低的耦合进行协同工作,从而提高应用的可扩展性及可维护…

深入探索:解读创意的力量——idea的下载、初步使用

目录 ​编辑 1.IDEA的简介 2.IDEA的下载 2.1下载路径https://www.jetbrains.com/zh-cn/idea/download/?sectionwindows​编辑​ 2.2下载的步骤 3 idea的初步使用 3.1新建一个简单的Java项目 3.1.1首先需要创建一个新的工程 3.1.2创建一个新的项目(模块&am…

39、传输层的任务和协议

从本节内容开始,我们学习TCP/IP模型的传输层的知识。传输层是TCP/IP模型中的重要组成部分,如果没有传输层的处理,那么源主机发送的IP数据包到达目的主机之后,目的主机将不知道这个数据是哪个应用程序的数据,就不能很好…

RTT(RT-Thread)线程间同步(保姆级)

目录 线程间同步 信号量 信号量结构体 信号量的使用和管理 动态创建信号量 实例 静态创建信号量 初始化和脱离信号量 获取信号量 信号量的互斥操作 获取信号量函数 释放信号量 信号量同步实例 互斥量(互斥锁) 互斥量的使用和管理 动态创…

【nacos】Param ‘serviceName‘ is illegal, serviceName is blank

报错信息 解决方式 一&#xff1a;缺少依赖 SpringBoot2.4之后不会默认加载bootstrap.yaml&#xff1b;需要手动在pom中加入如下依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-boot…

SCAU操作系统知识点之(一)计算机系统概述

缩写词&#xff1a; OS: Operating System 操作系统 PSW: Program Status Word 程序状态字 FCFS: First Come First Serve 先来先服务 PCB: Process Control Block 进程控制块 DMA: Direct Memory Access 直接存储器存取 MMU: Memory Management Unit 内存管理单元 SSTF: Short…

【maven】通过profiles实现:怎样激活某个仓库、同时加载多个profile、不同环境加载不同依赖jar

文章目录 一. 基本用法二. 仓库激活方式1. 使用activeProfile激活2. 使用-P参数激活3. 使用-P参数不激活 三. 查看激活的仓库四. 不同环境依赖不同版本的jar Maven中的profile是一组可选的配置&#xff0c;可以用来设置或者覆盖配置默认值。有了profile&#xff0c;你就可以为不…

(el-Form)操作(不使用 ts):Element-plus 中 Form 表单组件校验规则等的使用

Ⅰ、Element-plus 提供的 Form 表单组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Form 表单组件情况&#xff1a; 其一、Element-plus 自提供的 Form 代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环…

(JS逆向专栏十四)某游平台网站登入SHA1

声明: 本文章中所有内容仅供学习交流&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 名称:逗游 目标:登入参数 加密类型:SHA1 目标网址:https://www.doyo.cn/passport/l…

HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具

公文一键排版系统基本完成&#xff0c;准备继续完善SysInfo&#xff0c;增加用户帐户信息&#xff0c;其中涉及到Win32_Account结构&#xff0c;其C定义如下&#xff1a; [Dynamic, Provider("CIMWin32"), UUID("{8502C4CC-5FBB-11D2-AAC1-006008C78BC7}"…

SpringBoot整合、SpringBoot与异步任务

目录 一、背景描述二、简单使用方法三、原理五、使用自定义线程池六、Async失效情况 一、背景描述 java 的代码是同步顺序执行&#xff0c;当我们需要执行异步操作时我们通常会去创建一个新线程去执行。比如new Thread()。start()&#xff0c;或者使用线程池线程池 new Thread…

Rust 编程小技巧摘选(6)

目录 Rust 编程小技巧(6) 1. 打印字符串 2. 重复打印字串 3. 自定义函数 4. 遍历动态数组 5. 遍历二维数组 6. 同时遍历索引和值 7. 检查数组是否包含某个值 8. 二维矩阵中查找某个值 附&#xff1a;迭代器方法的区别 Rust 编程小技巧(6) 1. 打印字符串 fn main() …

案例10 Maven入门案例

基于Maven构建快速构建项目&#xff0c;输出“Hello World&#xff01;”。 1.选择Maven快速构建项目 ​2.设置Maven项目信息 ​3.设置Maven环境信息 ​4.项目结构 ​ 5.Maven操作 ​6.执行结果

Android图形-合成与显示-SurfaceTestDemo

目录 引言&#xff1a; 主程序代码&#xff1a; 结果呈现&#xff1a; 小结&#xff1a; 引言&#xff1a; 通过一个最简单的测试程序直观Android系统的native层Surface的渲染显示过程。 主程序代码&#xff1a; #include <cutils/memory.h> #include <utils/L…

vue左右div结构手动拉伸并且echarts图表根据拉伸宽高自适应

需求&#xff1a; 左右结构的div&#xff0c;可以根据数据抬起按下进行拉伸修改容器宽度的操作给左右结构某一图表设置拉伸自适应左右结构都设置个最小宽度&#xff0c;只能到一定区域内拉伸解决echarts的bug&#xff08;重复加载chart实例&#xff09;&#xff1a;[ECharts] …

数据通信——VRRP

引言 之前把实验做了&#xff0c;结果发现我好像没有写过VRRP的文章&#xff0c;连笔记都没记过。可能是因为对STP的记忆&#xff0c;导致现在都没忘太多。 一&#xff0c;什么是VRRP VRRP全名是虚拟路由冗余协议&#xff0c;虚拟路由&#xff0c;看名字就知道这是运行在三层接…

python接口自动化测试框架2.0,让你像Postman一样编写测试用例,支持多环境切换、多业务依赖、数据库断言等

项目介绍 接口自动化测试项目2.0 软件架构 本框架主要是基于 Python unittest ddt HTMLTestRunner log excel mysql 企业微信通知 Jenkins 实现的接口自动化框架。 前言 公司突然要求你做自动化&#xff0c;但是没有代码基础不知道怎么做&#xff1f;或者有自动化…

Fairy下载和使用

写在最前&#xff1a;本系列中将会涉及到 Unity&#xff0c;C#&#xff0c;Lua和FairyGUI&#xff08;FGUI&#xff09;。 FairyGUI介绍 官网&#xff1a; FairyGUI 编辑器下载&#xff1a; FairyGUI 截至文档记录最新版&#xff1a; https://res.fairygui.com/FairyGUI-Ed…

Exams/ece241 2013 q4

蓄水池问题 S3 S2 S1 例如&#xff1a;000 代表 无水 &#xff0c;需要使FR3, FR2, FR1 都打开&#xff08;111&#xff09; S3 S2 S1 FR3 FR2 FR1 000 111 001 011 011 001 111 000 fr代表水变深为…