位置: 编程技术 - 正文

Yii2中事务的使用实例代码详解(xa 事务)

编辑:rootadmin

推荐整理分享Yii2中事务的使用实例代码详解(xa 事务),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:事务rr,事务rr,yii2 事务,事务用在哪里,事务用在哪里,事务用在哪里,事务怎么用,事务acid,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

一般我们做业务逻辑,都不会仅仅关联一个数据表,所以,会面临事务问题。

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的一个逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。

准备

数据库引擎为innodb

本文使用的yii版本为2.0.5,只要是2.0以上就没有问题

运行环境为PHP7.0.0,Mysql5.6

Yii中的事务

处理异常

运行结果

注意,因为最后的数据没有插入成功,触发了事务的回滚,所以数据表没有新增数据产生。

触发事务回滚的原因是代码出现了异常(Exception)。

处理数据失败

一般来讲,我们的运行中的代码是不会出现这种明显的异常,这种异常会在开发测试过程中消灭掉。

而真正造成数据需要回滚的是我们的某个业务出现问题,导致没有写入部分的数据。

运行结果如下,数据库插入了三条数据。

也就是说,如果因为业务逻辑导致某个数据表没有写入数据,也没有出现对应的回滚。

改进方案如下

运行结果如下,数据库没有插入新数据,事务被回滚。

分散的数据处理

由于实际项目的复杂程度,导致我们的数据库操作分散在不同的Model中。

Yii2中事务的使用实例代码详解(xa 事务)

所以,实际项目的代码不会是上面的样子。

模拟需求

接收参数:

名字

性别

签名

业务处理流程:

接收参数

由发号器得到用户的uid,发号器对应数据表增加一位数字

把名字、性别、签名和上一步的uid写入用户信息表

初始化用户余额表

回滚触发时机:

初始化余额表没有传入uid导出没有写入数据

实际代码

正常的结果如下

如果把初始化用户余额部分的user_id没有传递成功,返回的结果如下

我们可以针对具体情况定位到错误所在位置,及时修改。

事务(Transaction)

从上面的实际代码可以看出,创建了事务,只要在范围内,就算是引入的别的Model也能把异常NG返回,完成回滚操作。

一般情况下,整个Yii应用使用了同一个数据库连接,或者说是使用了单例。

而在yiidbConnection中,又对事务对象进行了缓存:

因此,可以认为整个Yii应用,使用了同一个 Transaction 对象,也就是说, Transaction::_level 在整个应用的生命周期中,是有延续性的。 这是实现事务嵌套的关键和前提。

以上所述是小编给大家介绍的Yii2中事务的使用实例代码详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

php添加数据到xml文件的简单例子 xml文件:stu.xml:xmlversion="1.0"encoding="utf-8"AllDataxueshengmenxueshengname张三/nameyuwen/yuwenshuxue/shuxueyingyu/yingyu/xueshengxueshengname李四/nameyuwen/yuwenshuxue/shuxueyi

php操作xml并将其插入数据库的实现方法 如下所示:phpheader('content-type:text/html;charset=utf-8');mysql_connect('localhost','root','');mysql_select_db('test');mysql_query('SETnamesutf8');$xml_array=simplexml_load_file('suggest.xml');

PHP实现的网站目录扫描索引工具 代码很简单,这里就不多废话了,本代码来至一位网友的投稿,经测试可用phperror_reporting(E_ALL&~E_NOTICE);ignore_user_abort();set_time_limit(0);if($_GET['act']=='op'){$dat

标签: xa 事务

本文链接地址:https://www.jiuchutong.com/biancheng/301880.html 转载请保留说明!

上一篇:PHP模糊查询的实现方法(推荐)(thinkphp模糊查询)

下一篇:php添加数据到xml文件的简单例子(php添加数据到数据库失败error)

  • 小规模免增值税是普票还是专票
  • 计提并结转所得税费用的会计分录
  • 住房补贴需要交什么材料
  • 暂估成本跨年后收到票汇算清缴
  • 公司组织出去旅游主持词
  • 联营企业属于企业吗
  • 无票收入是否要交税
  • 向银行办理托收手续记什么科目
  • 增值税计算为什么是销项减进项
  • 存根联给了客户怎么办
  • 银行回单可以做收入吗
  • 施工单位开具发票税务税率
  • 其他债权投资和其他权益工具投资均可以计提减值
  • 个人给公司开税票有没有影响
  • 账簿保管期满如何销毁
  • 亏损结转本年利润会计分录
  • 政府拨入企业的资金怎么入账
  • 营改增后房产土地作价入股该如何做税务处理?
  • 公司注销取不到采购发票怎么汇算清缴?
  • 企业出口不退税怎么处理
  • 小规模文化交流活动
  • 含税价与不含税价哪个便宜
  • 物业公司场地租赁费怎么开票
  • 税局定额的标准
  • 在建工程转入固定资产的条件
  • 作废代开发票,是否退还已纳税款?
  • 土地转让应交税费
  • win11 zen2
  • 如何在win7中查找文件
  • 网页打不开是什么
  • 公司章程签署
  • rtmservice.exe - rtmservice是什么进程 有什么用
  • 获取vue实例
  • 财政专户资金是专项资金吗
  • 税控机维护费抵扣分录
  • 蓝桥杯web开发 618
  • JavaScript charCodeAt() 方法
  • win11调节屏幕亮度快捷键
  • topas命令详解
  • 百旺金赋开票系统客服电话
  • 财务报表季报应付职工薪酬是指三个月工资累计还是
  • 固定资产折旧完报废账务处理
  • Linux下实现MySQL数据备份和恢复的命令使用全攻略
  • 加工企业的税怎么算
  • 固定资产的会计政策有哪些
  • linux环境中使用哪些搜索命令比find更高效
  • 养猪死亡
  • 补贴收入是否缴纳个税
  • 销售货物增值税税率变化
  • 土地使用税如何计算缴纳
  • 机动车经销企业开具机动车发票
  • 销售折扣销货方式有哪些
  • 平均净资产怎么算公式的
  • 企业注销股东投资款怎么处理
  • 折现率算现值公式
  • 酒店开办费包括哪些项目
  • 支付宝企业账户在哪里查看
  • 新公司建立 需要先做哪行
  • xp系统打开注册表
  • linux虚拟机基本操作
  • 清华同方bios通用密码(thtfpc)
  • os x10.11el capitan公测版下载地址(公测版计划注册教程)
  • linux find命令忽略大小写
  • 锁屏壁纸设置后不显示怎么办
  • linux时区问题
  • Win10预览版拆弹
  • javascript数据结构与算法项目计算找零
  • 所有的未知
  • perl数组元素个数
  • javascript 基础
  • android下拉刷新上拉加载
  • 可以在windows环境下双击而直接放映
  • listview设置item宽度
  • python console不能用
  • c#未来展望
  • 广州契税补贴2022政策
  • 利息收入通过什么科目核算
  • 土地增值税网上申报流程
  • 税务局监督执纪存在问题
  • 餐饮发票怎么看真假
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设