ThinkPHP5中的事务操作

发布时间 - 2020-01-30 00:00:00    点击率:

使用事务处理的话,需要数据库引擎支持事务处理。比如 mysql 的 myisam 不支持事务处理,需要使用 innodb 引擎。

ThinkPHP5.0

使用transaction 方法操作数据库事务,当发生异常会自动回滚,例如:

自动控制事务处理

Db::transaction(function(){
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});

也可以手动控制事务,例如:

// 启动事务Db::startTrans();try{
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();    } catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}

ThinkPHP5.1

最简单的方式是使用 transaction 方法操作数据库事务,当闭包中的代码发生异常会自动回滚,例如:

Db::transaction(function () {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);});

也可以手动控制事务,例如:

// 启动事务Db::startTrans();try {
    Db::table('think_user')->find(1);
    Db::table('think_user')->delete(1);
    // 提交事务
    Db::commit();} catch (\Exception $e) {
    // 回滚事务
    Db::rollback();}

注意在事务操作的时候,确保你的数据库连接使用的是同一个。

V5.1.13+版本开始,可以支持MySQL的XA事务用于实现全局(分布式)事务,你可以使用:

Db::transactionXa(function () {
    Db::connect('db1')->table('think_user')->delete(1);
    Db::connect('db2')->table('think_user')->delete(1);}, [Db::connect('db1'),Db::connect('db2')]);

要确保你的数据表引擎为InnoDB,并且开启XA事务支持。


# 事务处理  # 的是  # 你可以  # 不支持  # 最简单  # 包中  # br  # class  # pre  # transaction 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在云主机快速搭建网站站点?  微信推文制作网站有哪些,怎么做微信推文,急?  手机软键盘弹出时影响布局的解决方法  在线教育网站制作平台,山西立德教育官网?  如何在Tomcat中配置并部署网站项目?  浅谈javascript alert和confirm的美化  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  个人网站制作流程图片大全,个人网站如何注销?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  如何用西部建站助手快速创建专业网站?  bing浏览器学术搜索入口_bing学术文献检索地址  夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化  如何在香港免费服务器上快速搭建网站?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  android nfc常用标签读取总结  如何在景安云服务器上绑定域名并配置虚拟主机?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  如何获取PHP WAP自助建站系统源码?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  高端网站建设与定制开发一站式解决方案 中企动力  香港服务器如何优化才能显著提升网站加载速度?  Python高阶函数应用_函数作为参数说明【指导】  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  昵图网官网入口 昵图网素材平台官方入口  如何获取免费开源的自助建站系统源码?  如何挑选优质建站一级代理提升网站排名?  高端企业智能建站程序:SEO优化与响应式模板定制开发  php打包exe后无法访问网络共享_共享权限设置方法【教程】  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  清除minerd进程的简单方法  如何在腾讯云服务器快速搭建个人网站?  网站建设保证美观性,需要考虑的几点问题!  Laravel如何处理文件下载请求?(Response示例)  Laravel如何实现API速率限制?(Rate Limiting教程)  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  音乐网站服务器如何优化API响应速度?  图册素材网站设计制作软件,图册的导出方式有几种?  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel怎么在Controller之外的地方验证数据  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  php 三元运算符实例详细介绍  如何用美橙互联一键搭建多站合一网站?  如何解决hover在ie6中的兼容性问题  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】