在操作数据库中,实现一个功能时有时候会多次操作数据库,在多次操作数据库时,就会有可能出现其中一条sql语句执行成功,而另一条sql语句执行失败。这样的话就会出现很严重的问题,所以可以用MySQL的实物处理来解决这个问题。

laravel中的事物:

假如说:有一个用户表(user)

里面有两个字段,username,password

password字段设置为char(32),固定长度。

现在想要一次性插入两个用户:

通常执行sql语句(就是直接写两句):

$user1 = DB::table('user')->insert(['uname'=>'user1','password'=>'111']);

$user2 = DB::table('user')->insert(['uname'=>'user2','password'=>'222']);

这样一般都执行成功!!!

但是如果在开发业务逻辑时,会出现下面的情况:

$user1 = DB::table('user')->insert(['uname'=>'user1','password'=>'111']);

$user2 = DB::table('user')->insert(['uname'=>'user2','password'=>'22222222222222222222222222222222']);

在第二条sql语句中password字段的长度是33位的长度,这样肯定会报错

如果正常情况不用事物处理的话,肯定是插入的一个用户。

使用事物后应该是:

第一步、开启事务:

DB::beginTransaction();

第二步、执行成功时提交事务,失败时回滚

DB::commit();//成功,提交事务

DB::rollBack();//失败,回滚事务

eg:

DB::beginTransaction();

try {

$user1 = DB::table('user')->insert(['uname'=>'user1','password'=>'111']);

$user2 = DB::table('user')->insert(['uname'=>'user2','password'=>'222222222222222']);

if($user1&&$user2){

DB::commit();

echo 'success';

}

} catch (\Exception $e) {

DB::rollBack();

echo 'error';

}

其中要注意一点的是,catch里面的抛出异常,Exception前面要加上一个‘\’,不然的话在框架里面他会找不到这个类,然后就不会抛出异常。框架就会直接报错,起不到事务的作用。

转自:http://blog.csdn.net/iloveyougirls/article/details/71436558

laravel mysql 事务_laravel框架中的MySQL事务处理 阿星小栈相关推荐

  1. python框架 mysql数据库_在Python的框架中为MySQL实现restful接口的教程

    最近在做游戏服务分层的时候,一直想把mysql的访问独立成一个单独的服务DBGate,原因如下: 请求收拢到DBGate,可以使DBGate变为无状态的,方便横向扩展 当请求量或者存储量变大时,mys ...

  2. linux中mysql设置大小写敏感,linux中修改mysql表名大小写敏感

    在mysql启动参数文件中配置mysql对大小写不敏感. 参数文件位置:/etc/my.cnf 1.用rpm包安装的MySQL是不会安装/etc/my.cnf文件的, 至于为什么没有这个文件而MySQ ...

  3. abp 使用mysql_在Abp框架中使用Mysql数据库的方法以及相关问题小记

    最近发现了一款DDD的框架 看起来不错,据说挺流弊的 刚好最近要弄点小东西,拿来试试也不错 苦于穷逼买不起高配服务器,只好装mysql数据库了 下面说下如何在该框架下使用Mysql数据库 打开项目后, ...

  4. tp3.1 mysql 事务_tp框架事务处理实例和理解

    tp的事务开启是非常简单的, 只需要M()->startTrans();//开启事务,M()可以是M('xxx') $m->rollback();//事务回滚 $m->commit( ...

  5. thinkphp mysql 预处理_thinkPHP框架中执行原生SQL语句的方法

    本文实例讲述了thinkPHP框架中执行原生SQL语句的方法.分享给大家供大家参考,具体如下: 怎样在thinkphp里面执行原生的sql语句? $Model = new Model();//或者 $ ...

  6. ci mysql 缓存_CodeIgniter框架中启用和清除缓存的教程

    CodeIgniter框架启动与缓存问题许多的新手都不知道如何来操作了,下面我们就一起来看一篇关于CodeIgniter框架中启用和清除缓存例子,具体如下所示. Codeigniter支持缓存技术,以 ...

  7. npm mysql 事务_一文解读MySQL事务

    经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下. MySQL 事务 本文所说的 MySQL 事务都是指在 I ...

  8. mysql 事务回滚_SQL基础丨事务处理

    事务的特性:ACID MySQL5.5版本之前,默认的存储引擎是MyISAM,在5.5版本之后默认存储引擎是InnoDB.两者唯一的区别就是InnoDB支持事务. 事务的英文是transaction, ...

  9. mysql status questions_运行中的mysql状态查看

    运行中的mysql状态查看 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / se ...

  10. django框架访问mysql数据库_Django框架怎么配置mysql数据库

    Django框架怎么配置mysql数据库 发布时间:2020-08-01 10:37:54 来源:亿速云 阅读:67 作者:小猪 这篇文章主要讲解了Django框架怎么配置mysql数据库,内容清晰明 ...

最新文章

  1. Kubernetes 1.14 版本发布:正式支持Windows 节点,持久化本地卷进入GA
  2. python 压缩文件 调用7z_Python:如何从Python压缩的7z文件中读取一行?
  3. js二进制流转Blob对象。Blob对象再转File对象
  4. Asp.net基础概念之 事件
  5. 人到了中年在职场中就应该保持内敛的心态
  6. Visual Studio 2017在编译时出现错误E2512:功能测试宏的参数必须是简单标识符
  7. 解决IE8下不支持document.getElementsByClassName的方法
  8. python基础: 选择语句
  9. 大学计算机基础流媒体,大学计算机基础经典课件.ppt
  10. 转盘抽奖小程序java_大转盘抽奖小程序版 转盘抽奖网页版
  11. win10下pyt3.7安装scrapy后cmd运行相关命令SyntaxError: invalid syntax 解决办法
  12. springboot+vue房屋租赁系统-求租合同系统java
  13. RxJava 两种生产和消费模式,(冷)cold和(热)hot
  14. 分享 | 一份小小的信念
  15. 中国地质大学计算机研究所宿舍,在地大,据说一些寝室闪闪发光
  16. 学习编程一年需要花费多少?自学可以成为程序员吗?
  17. MySQL DDL Duplicate entry '12' for key 'PRIMARY'
  18. 你有新的推送消息,请注意查收
  19. 数组 (1)一维数组
  20. 手机控制汽车无钥匙进入一键启动方案设计

热门文章

  1. 微分几何 Class 2 欧氏空间
  2. 百度富文本编辑器插入视频链接相关问题
  3. Python爬虫学习之路——python IED工具介绍(一)
  4. 《黑白团团队》第九次团队作业:Beta冲刺第二天
  5. 华为员工工资曝光:入职12年月薪31万!手里的窝窝头突然就不香了.....
  6. google 手气不错 的代码
  7. mysql evict_SpringBoot+Mybatis+MySQL实现读写分离
  8. 0行代码,实现植物大战僵尸脚本
  9. 关于NN以及BP的一些网络上整理的资料
  10. 国外创企Emotech获中国投资,助力个性化机器人Olly