前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Laravel DB类实现事务

Laravel DB类实现事务

作者头像
切图仔
发布于 2022-09-08 11:06:38
发布于 2022-09-08 11:06:38
94500
代码可运行
举报
文章被收录于专栏:生如夏花绚烂生如夏花绚烂
运行总次数:0
代码可运行

事务

事务主要用于处理操作量大,较复杂的数据,如在某个场景你想删除某个用户,但又要删除这个用户相关的信息,这种操作就构造一个事务。

事务有四个特性

  • 原子性
  • 一致性
  • 隔离性
  • 持久性

原子性

一个事务的所有操作,要么全部完成,要么都不完成,如果在事务执行过程中发送错误则会回滚到事务开始前的状态。

一致性

在事务开始之前和事务结束以后,数据库的完整性没有被破坏。即写入的数据必须符合所有预设规则。

隔离性

数据库允许多个并发事务同时对其数据库进行读写与修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据库的不一致。事务隔离分为不同级别 ,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。

持久性

事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

注意:在MySQL中只有使用了InnoDB数据库引擎的数据表才能实现事务

DB类实现事务

通过transaction方法实现事务,该方法不需要你手动设置,回滚,事务提交。当事务中发生错误时会自动抛出异常并回滚到事务执行之前的状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB::transaction(function(){
...事务执行

})

事务传参

由于事务中使用的是匿名函数,给匿名函数传参需按照下面格式

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB::transaction(function () use ($arguments){
....

})
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 DB::transaction(function () use ($req){
       
        Pro::where('id',$req->id)->update(['money'=>$req->money]);
            DB::table('inves')->insert(['uid'=>Auth::user()->id,'pid'=>$req->id,'money'=>$req->money,'status'=>1,'pubtime'=>time()]);

        });

手动操作事务

手动操作事务,控制事务回滚,事务提交

DB::beginTransaction():开启事务

DB::rollback():事务回滚

DB:commit():提交事务

如下简单示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB::beginTransaction();
try {
    Pro::where('id',$req->id)->update(['money'=>$req->money]);
    DB::table('inves')->insert(['uid'=>Auth::user()->id,'pid'=>$req->id,'money'=>$req->money,'status'=>1,'pubtime'=>time()]);
} catch(\Exception $e)
{
     DB::rollback();//事务回滚
     throw $e;
 }
       
DB::commit();
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL事务
事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
星哥玩云
2022/09/15
4.3K0
MySQL事务
MySQL事务大揭秘:事务概述和隔离级别解析
开始之前推荐一篇实用的文章:《基于生成式人工智能的三维模型自动化设计与优化》,作者:【申公豹】。
Lion 莱恩呀
2024/12/01
1830
MySQL事务大揭秘:事务概述和隔离级别解析
MySQL 事务
  事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如 SQL,C++ 或 Java)书写的用户程序的执行所引起,并用形如 begin transaction 和 end transaction 语句或函数调用来界定。事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。一般用来管理 insert,update,delete 语句。
Demo_Null
2020/09/28
2.2K0
MySQL 事务
MySQL(十三)之MySQL事务
前言   这段时间自己会把之前学的东西都总结一遍,希望对自己以后的工作中有帮助。其实现在每天的状态都是很累的,但是我要坚持!   进入我们今天的正题:   为什么MySQL要 有事务呢?事务到底是用来干什么的?我们通过一个例子来说明:   事务广泛的运用于订单系统、银行系统等多种场景。如果有以下一个场景:A用户和B用户是银行的储户。现在A要给B转账500元。那么需要做以下几件事:     1)检查A的账户余额>500元;     2)A账户扣除500元;     3)账户增加500元;   正常的流程走下来
用户1195962
2018/01/18
9150
【愚公系列】2022年01月 Mysql数据库-事务
文章目录 一、MySQL事务 1.事务的概念 2.事务的数据准备 3.未管理事务演示 4.管理事务演示 5.事务的提交方式 6.事务的四大特征(ACID) 7.事务的隔离级别 8.事务隔离级别演示 9.隔离级别总结 10.事务的总结 一、MySQL事务 1.事务的概念 一条或多条 SQL 语句组成一个执行单元,其特点是这个单元要么同时成功要么同时失败,单元中的每条 SQL 语句都相互依赖,形成一个整体,如果某条 SQL 语句执行失败或者出现错误,那么整个单元就会回滚,撤回到事务最初的状态,如果单元中所有的
愚公搬代码
2022/01/28
3800
MySQL基础之事务编程学习笔记
在学习《MySQL技术内幕:SQL编程》一书,并做了笔记。本博客内容是自己学了《MySQL技术内幕:SQL编程》事务编程一章之后,根据自己的理解做的笔记,内容和书本并不一致,不过书本实验都经过自己验证,基于MySQL5.7版本。做笔记的目的是方便自己复习,同时分享出来或许对其他人或许有点帮助
SmileNicky
2020/01/13
4830
MySQL基础之事务编程学习笔记
java核心技术第五篇之事务和MVC模式
第一部分:事务 1.事务的简介: 1.1 在一组操作中(比如增加操作,修改操作),只有增加和修改操作都成功之后,这两个操作才能真正的成功. ,如果这两个操作中,有一个失败了,这两个操作都失败了.
海仔
2019/08/05
6650
JAVA保姆式上手教程之入门精通案例
<img src="assets/image-20211123160059187.png" alt="image-20211123160059187" style="zoom: 33%;" />
张哥编程
2024/12/13
990
第13章_事务基础知识
🧑个人简介:大家好,我是 shark-Gao,一个想要与大家共同进步的男人😉😉
程序员Leo
2023/08/02
2260
第13章_事务基础知识
事务
在默认情况下,用户执行的每一条SQL语句都会被当成单独的事务自动提交。 如果要将一组SQL 语句作为-一个事务, 则需要先执行以下语句显式地开启一个事务。
海盗船长
2022/05/05
5440
MySQL 事务详解
事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系
久绊A
2023/04/10
2640
MySQL事务处理:如何确保数据一致性与可靠性
事务(Transaction)是数据库管理系统(DBMS)中的一个核心概念。MySQL 事务是指一组数据库操作,作为一个整体进行处理,确保要么全部成功,要么全部失败。
用户7954602
2024/12/21
2580
MySQL事务处理:如何确保数据一致性与可靠性
结合图文一起搞懂MySQL事务、MVCC、ReadView!
上次讲完MySQL的三大日志 undolog、redolog、binlog后,有必要把关于MySQL事务分析的文章马上给续上,我们知道在多并发事务处理的MVCC【多版本并发控制】中是有涉及到undo log日志的。
小许code
2023/09/18
4K4
结合图文一起搞懂MySQL事务、MVCC、ReadView!
数据库事务
如果在执行一个业务操作的时候,需要执行多条SQL语句,必须保证所有的SQL语句都执行成功。只要其中有一条执行失败,则所有的SQL语句都要进行回滚
Devops海洋的渔夫
2021/03/12
7360
数据库事务
并发锁 (四) : innodb 事务
从Mysql5.5版本开始,InnoDB是默认的表存储引擎。其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读、同时被设计用来最有效的利用以及使用内存和CPU。
仙士可
2019/12/18
4310
Spring事务和事务传播机制(1)
在Spring框架中,事务管理是一种用于维护数据库操作的一致性和完整性的机制。Spring事务管理提供了灵活的方式来处理事务,包括事务的创建、提交、回滚以及事务的传播行为。
终有救赎
2023/10/16
2400
Spring事务和事务传播机制(1)
【JavaEE进阶】Spring事务和事务传播机制
Spring 事务是 Spring 框架提供的一种机制,用于管理数据库操作或其他资源的一组相关操作,以确保它们在一个原子、一致、可靠和隔离的执行单元内进行。事务用于维护数据的完整性并支持并发访问数据库时的数据一致性。
xxxflower
2023/10/16
5210
【JavaEE进阶】Spring事务和事务传播机制
SQL SERVER事务处理
事务三种运行模式: 自动提交事务 每条单独的语句都是一个事务。 显式事务 每个事务均以 BEGIN TRANSACTION 语句显式开始, 以 COMMIT 或 ROLLBACK 语句显式结束。 隐性事务 在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句
Hongten
2018/09/18
1.9K0
Innodb事务的一些概念
事务是由一系列SQL组成的逻辑处理单元,要么全'部'执行,要么全'不'执行。事务具有四个属性,也就是常说的ACID属性,分别代表原子性,一致性,隔离性和持久性,再重新巩固一下吧:
AsiaYe
2019/11/06
3370
Innodb事务的一些概念
JDBC中事务回滚
 理解:防止出现未知错误,导致原先要执行完全的数据只执行了一半,最终影响数据,也就是 事务是一组组合成逻辑工作单元的操作,虽然系统中可能会出错,但事务将控制和维护事务中每个操作的一致性和完整性。
吃猫的鱼Code
2023/02/02
1.7K0
相关推荐
MySQL事务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验