thinkphp事务机制

一、总结

下面文章也要看,下面有抛出异常(自己提供错误信息那种)

1、事务机制(原子性):所有的事情都完成了就提交,否则回滚。电商里面用的多,付钱买东西的时候

2、样例(简单样例)开启事务,提交事务,删除事务,感觉下面的try-catch方式更专业

// 开启事务

 Db::startTrans();
// 删除数据 33 $a=Db::table("user")->delete(33); // 删除数据 34 $b=Db::table("user")->delete(34); // 判断条件 if ($a && $b) { // 提交事务 Db::commit();

}else{ // 回滚事务 Db::rollback();

}

二、thinkphp事务机制

1、事务

张三 银行卡 1000, 李四 银行卡 500, 张三给李四转账200

1) 银行 先扣除 张三的200

2) 银行 将200 给了李四

2、mysql事务

mysql事务 要求 数据库的引擎必须 InnoDB

3、使用

1、自动控制事务

Db::transaction(function(){

// 删除一条数据

Db::table("user")->delete(40);

// 删除数据

Db::table("user")->deletes();

});

2、手动控制事务 (***)

// 开启事务

Db::startTrans();

// 事务

try{

// 删除数据id 31

$a=Db::table("user")->delete(31);

// 判断是否删除成功

if (!$a) {

                                               throw new \Exception("删除id 31 数据没有成功");

                                     }

// 删除不存在的数据 id 32

$b=Db::table("user")->delete(32);

// 判断是否删除成功

if (!$b) {

                                               throw new \Exception("删除id 32 数据没有成功");

                                     }

// 执行提交操作

Db::commit();

}catch(\Exception $e){

// 回滚事务

Db::rollback();

// 获取提示信息

dump($e->getMessage());

}

// ==================================================================

// 开启事务

Db::startTrans();

// 删除数据 33

$a=Db::table("user")->delete(33);

// 删除数据 34

$b=Db::table("user")->delete(34);

// 判断条件

if ($a && $b) {

// 提交事务

Db::commit();

}else{

// 回滚事务

Db::rollback();

}

thinkphp事务机制的更多相关文章

  1. Redis学习笔记~Redis事务机制与Lind.DDD.Repositories.Redis事务机制的实现

    回到目录 Redis本身支持事务,这就是SQL数据库有Transaction一样,而Redis的驱动也支持事务,这在ServiceStack.Redis就有所体现,它也是目前最受业界认可的Redis ...

  2. 分享我们项目中基于EF事务机制的架构

    写在前面: 1. 本文中单元测试用到的数据库,在执行测试之前,会被清空,即使用空数据库. 2. 本文中的单元测试都是正确通过的. 要理解EF的事务机制,首先要理解这2个类:TransactionSco ...

  3. NoSQL生态系统——事务机制,行锁,LSM,缓存多次写操作,RWN

    13.2.4 事务机制 NoSQL系统通常注重性能和扩展性,而非事务机制. 传统的SQL数据库的事务通常都是支持ACID的强事务机制.要保证数据的一致性,通常多个事务是不可能交叉执行的,这样就导致了可 ...

  4. REDIS 事务机制

    基本事务操作: 任何数据库都必须要保证一种原子执行操作:最基本的原子执行操作肯定是需要提供: 举一个例子来说明: 当对某个Key 做一个统计: 可能不同的Client做它那部分的统计,一段时间后,服务 ...

  5. Spring 事务机制详解

    原文出处: 陶邦仁 Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考. Spring声明式事务让我们从复杂的事务处理中得到 ...

  6. MySQL事务机制

    事务机制的特性通常被概括为"ACID原则" A(Atomic) 原子性: 构成一个事务的所有语句应该是一个独立的逻辑单元,要么全部执行成功, 要么一个都不成功, 你不能只执行他们当 ...

  7. 分享我们项目中基于EF事务机制的架构 【转载】

    http://www.cnblogs.com/leotsai/p/how-to-use-entity-framework-transaction-scope.html 写在前面: 1. 本文中单元测试 ...

  8. NopCommerce添加事务机制

    NopCommerce现在最新版是3.9,不过依然没有事务机制.作为一个商城,我觉得事务也还是很有必要的.以下事务代码以3.9版本作为参考: 首先,IDbContext接口继承IDisposable接 ...

  9. Kafka设计解析(八)- Exactly Once语义与事务机制原理

    原创文章,首发自作者个人博客,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/kafka/transaction/ 写在前面的话 本 ...

随机推荐

  1. 停止复制代理后AWT缓存组的行为

    AWT缓存组中尽管大多数时候数据是从TimesTen到Oracle,但也存在数据从Oracle到TimesTen的情形. 数据从TimesTen下沉到Oracle依靠复制代理,数据从Oracle到Ti ...

  2. js---12对象创建方式,构造器,原型

    <script type="text/javascript"> var o = {}; var o1 = new Object();//这2种方式创建对象是一样的,因为 ...

  3. Elasticsearch之需要注意的问题(es和jdk版本)

    (1)在使用java代码操作es集群的时候 要保证本地使用的es的版本和集群上es的版本保持一致.  (2)保证集群中每个节点的JDK版本和es基本配置一致 这个很简单,不多说.  (3)es集群中j ...

  4. SQL、Linq相关字段搜索

    结合一些分词组件,如盘古,对于用户查询关键字红按钮很容易分出 ‘红’ ‘按钮’二个单词 我们假设产品名称列里面是红色,规格里面是按钮 /* 普通sql实现全文搜索declare @key1 nvarc ...

  5. 使用Cygwin在Windows上体验Linux的快感

    前言 记得大学的时候就以前使用过Cygwin,可惜当时没有发现她的美,我相信如今大多数朋友可能会更加倾向于使用Git或者干脆直接使用虚拟机以及原生Unix. 只是对于刚进入Linux的世界新人来说,使 ...

  6. Linux网络编程--字节序

    1 .谈到字节序,那么会有朋友问什么是字节序 非常easy:[比如一个16位的整数.由2个字节组成,8位为一字节,有的系统会将高字节放在内存低的地址上,有的则将低字节放在内存高的地址上,所以存在字节序 ...

  7. javascript 获​取​H​T​M​L​ ​D​O​M​父​,​子​,​临​近​节​点

    在Web应用程序特别是Web2.0程序开发中.常常要获取页面中某个元素,然后更新该元素的样式.内容等.怎样获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有非 ...

  8. Day6上午解题

    预计分数:100+100+30=230 实际分数:90+25+10=125 T1少判了一种情况,T2的贪心是错的,T3被卡了... T1 模拟水题,注意20的可以用3个5块的找 #include< ...

  9. modal模态框插件

    用法: <!--模态框--> <div class="modal fade" id="myModal"> <div class=& ...

  10. C# 截取中英文混合字符串分行显示宽度相同

    /// <summary>        /// 截取方法名显示宽度        /// </summary>        /// <param name=" ...