事务: 执行完A事件然后执行B事件,AB事件都执行完才算完成。可是有时候由于某些因素,A事件执行完,还没来得及执行B事件。怎么办?就需要回到A事件执行前。这种事情多见于电商支付功能。
mysql事务要求数据库引擎必须是innoDB

自动控制事务处理:

public function delete(){
//由于第二条语句写的有问题,只执行第一条
Db::table('user')->delete(1038);
Db::table('user')->deletesssssss(1039);

//由于第二条写的有问题,两条删除都不执行
Db::transaction(function(){
Db::table('user')->delete(1040);
Db::table('user')->deletesssssss(1041);
});
}
1
2
3
4
5
6
7
8
9
10
11
手动控制事务

public function delete(){
// 启动事务
Db::startTrans();
try{
$res=Db::table('user')->delete(1039);
if(!$res){
throw new \Exception('删除失败');
}else{
throw new \Exception('删除成功');
}
// 提交事务
Db::commit();
} catch (\Exception $e) {
dump($e->getMessage());
// 回滚事务
Db::rollback();
//注意:我们做了回滚处理,所以id为1039的数据还在
}
}

TP5之事务处理的更多相关文章

  1. In-Memory:内存优化表的事务处理

    内存优化表(Memory-Optimized Table,简称MOT)使用乐观策略(optimistic approach)实现事务的并发控制,在读取MOT时,使用多行版本化(Multi-Row ve ...

  2. 读书笔记--SQL必知必会20--管理事务处理

    20.1 事务处理 使用事务处理(transaction processing),通过确保成批的SQL操作要么完全执行,要么完全不执行,来维护数据库的完整性. 如果没有错误发生,整组语句提交给数据库表 ...

  3. EntityFramework 事务处理

    默认情况下,当EF调用SaveChanges()时,会把生成的所有SQL命令“包”到一个“事务(transaction)”中,只要有一个数据更新操作失败,整个事务将回滚. 在多数情况下,如果你总在数据 ...

  4. Java事务处理

    Java事务处理总结     一.什么是Java事务   通常的观念认为,事务仅与数据库相关.   事务必须服从ISO/IEC所制定的ACID原则.ACID是原子性(atomicity).一致性(co ...

  5. PHP与MYSQL事务处理

    /*MYSQL的事务处理主要有两种方法.1.用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2.直接用set来改变mysql的 ...

  6. TP5.0源生Excel导出

    PHPExcel类在TP5里边并不能很好的兼容,使用起来很麻烦. 不像是tp3.2那样直接import()加进来就能new,因为它里边的命名空间找不到.总是说undefined class. 如果是使 ...

  7. 已经过事务处理的 MSMQ 绑定(转载)

    https://msdn.microsoft.com/zh-cn/biztalk/ms751493 本示例演示如何使用消息队列 (MSMQ) 执行已经过事务处理的排队通信. 注意 本主题的末尾介绍了此 ...

  8. SQLite剖析之事务处理技术

    前言 事务处理是DBMS中最关键的技术,对SQLite也一样,它涉及到并发控制,以及故障恢复等等.在数据库中使用事务可以保证数据的统一和完整性,同时也可以提高效率.假设需要在一张表内一次插入20个人的 ...

  9. PHP系统声明式事务处理

    转自:http://www.jianshu.com/p/34261804bc45 1.数据库事务 事务(Transaction)是并发控制的基本单位.所谓的事务,它是一个操作序列,这些操作要么都执行, ...

随机推荐

  1. windows——celery

    celery 4.0版本以后放弃对Windows的支持 GITHUB_issues(https://github.com/celery/celery/issues/4178) 替代解决方案: 安装:p ...

  2. nginx常用命令和配置

    1.常用命令 查看版本号: ./nginx -v   启动nginx:在/usr/local/nginx/sbin 目录下执行  ./nginx   关闭nginx:在/usr/local/nginx ...

  3. 'telnet' is not recognized as an internal or external command

     http://blog.csdn.net/lubinsu/article/details/7294870 使用telnet的时候出现如下提示:'telnet' is not recognized ...

  4. [Luogu] 小凯的疑惑

    https://www.luogu.org/problemnew/show/P3951 考场上打表找规律的我写出了这样一份代码(紧张到爆<已经爆>) 当时一出考场听说是O(1)做法,当时就 ...

  5. NSNull

    集合中是不能放nil值的,因为nil是结尾,但是为了存放表示什么都没有的值,可以使用NSNull,它也是NSObject的一个子类. void null(){ NSNull *nl=[NSNull n ...

  6. 函数柯里化与偏函数+bind

    简单理解: 1,函数柯里化就是把多参数函数分解为多return的单参数函数: 举个例子(伪代码): function func (a, b, c){ return } 柯里化为 function fu ...

  7. MySQL| MySQL关键字和保留字

    MySQL 5.5 Keywords and Reserved Words The following list shows the keywords and reserved words in My ...

  8. 【Elasticsearch】Docker 安装 Elasticsearch 2.4.4 版本(高版本方式不同)

    1. 下载  elasticsearch docker pull docker.elastic.co/elasticsearch/elasticsearch:6.4.3 2.启动 elasticsea ...

  9. DS博客作业04--树大作业

    1.树的存储结构 本组采用的树的存储结构为链式结构,选择如图所示的结构体 Name为结点的名称 LevelNum为孩子节点的个数 *Children[20]用来指向不同的孩子结点(类似于二叉树的结构体 ...

  10. Redis 的配置

    Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONFIG 命令查看或设置配置项. 语法 Redis CONFIG 命令格式如下: redis 12 ...