yii2事务运用举例

直接上代码:

$db = Yii::$app->db;
$transaction = $db->beginTransaction(); //开启事务

try {
  // 更新member表
    $db->createCommand()->update(‘member‘,[
        ‘level‘ => $data[‘level‘]
    ],[‘id‘=>$data[‘user_id‘]])->execute();

  // 更新storage表
    $db->createCommand()->update(‘storage‘,[
        ‘data‘ => $data[‘data‘],
    ],[‘member_id‘=>$data[‘user_id‘]])->execute();

    $transaction->commit(); // 两条sql均执行成功,则提交

} catch (Exception $e) {

    $transaction->rollBack(); // 事务执行失败,则回滚

}
时间: 2024-10-09 14:02:34

yii2事务运用举例的相关文章

Yii2事务

今天写到发券,发现没加事务,于是学习了下 事务: 是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行. 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源. Yii2.0事务的应用: $transaction=Yii::$app->db->beginTransaction(); try{ $model->status=time(); if($model->save()){ $aa=new AAModel; $aa->n

2015第24周一Spring事务

1. Spring事务管理简介 (1)Spring为多种不同类型的事务管理机制提供统一编程模型,这些事务管理模型包括JTA.JDBC.Hibernate.JPA和JDO. (2)Spring支持声明式事务管理(使用XML文档配置(或者Annotation)结合AOP实现的事务管理). (3)为代码嵌入式(programmatic)的事务管理提供API接口,与复杂的JTA接口相比要简单的多. (4)能够与Spring的数据抽象访问完美结合. 2. Spring事务管理的优点 一般认为,JavaEE

Spring之声明式事务

在讲声明式事务之前,先回顾一下基本的编程式事务 编程式事务: //1.获取Connection对象 Connection conn = JDBCUtils.getConnection(); try { //2.开启事务:取消自动提交 conn.setAutoCommit(false); //3.执行数据库操作 chain.doFilter(req,resp); //4.提交事务 conn.commit(); }catch(Exception e) { //5.回滚事务 conn.rollBack

Farseer.net轻量级开源框架 入门篇:事务的使用中级篇

导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 下一篇:Farseer.net轻量级开源框架 中级篇: 执行SQL语句 DbExecutor 的使用 使用事务,我们需要用到一个类:DbExecutor 它的命名空间在:FS.Core.Data 中,我们先看下它的参数: 1 /// <summary> 2 /// 构造函数 3 /// </summary> 4 /// <param name=&

Spring之事务操作(配置文件)

UserDao.java 1 package helloworld.tx; 2 3 import org.springframework.jdbc.core.JdbcTemplate; 4 5 public class UserDao { 6 7 private JdbcTemplate jdbcTemplate; 8 9 public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { 10 this.jdbcTemplate = jdbcTem

MySQL之事务以及存储过程

今日内容 视图 触发器 事务 存储过程 内置函数 流程控制 索引 视图 1.什么是视图 视图就是通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course asselect * from teacher inner join course on teacher.tid = course.teacher_id; 强调1.在硬盘中,视图只有表结构文件,没有表数据文件2.视

mysql的 视图、触发器、事务、存储过程、函数、索引与慢查询优化

视图 假设有两张表学生和老师,学生表(sid,name,tid)关联老师表(tid,tname) 创建视图的语法: create view 视图名 as SQL语句 实例: create view student2teacher as select * from student inner join teacher on student.tid=teacher.tid; 创建视图后会产生一个名为 student2teacher 的表,可以直接调用. 思考:开发过程中会不会去使用视图? 不会!视图

43 MySQL视图、触发器、事务、存储过程、函数

视图 1.什么是视图 通过查询得到一张虚拟表,然后保存下来,下次直接使用即可 2.为什么要用视图 如需频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 注意: 1)在硬盘中,视图只有表结构文件,没有表数据文件 2)视图通常是用于查询,尽量不要修改视图中的数据 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; -- 删除视图 drop

事务隔离 保证一系列操作的完整性

3 事务隔离 保证一系列操作的完整性 在mysql中什么是事务? ????举例说明:转账行为 ????????????你要给朋友转100块钱,而此时你的银行卡只有100块钱. ? 转账过程具体到程序里会有一系列的操作,比如查询余额.做加减法.更新余额等,这些操作必须保证是一体的,不然等程序查完之后,还没做减法之前,你这100块钱,完全可以借着这个时间差再查一次,然后再给另外一个朋友转账,如果银行这么整,不就乱了么?这时就要用到"事务"这个概念了. ? 事务定义: 事务就是要保证一组数据