Yii 异常处理、事务回滚
来源:互联网 发布:网络点播系统 编辑:程序博客网 时间:2024/05/18 17:57
当一个应用要执行几条查询,每条查询要从数据库中读取并/或向数据库中写入信息时, 保证数据库没有留下几条查询而只执行了另外几条查询是非常重要的。 事务,在 Yii 中表现为 CDbTransaction 实例,可能会在下面的情况中启动:
开始事务.
一个个执行查询。任何对数据库的更新对外界不可见。
提交事务。如果事务成功,更新变为可见。
如果查询中的一个失败,整个事务回滚。
上述工作流可以通过如下代码实现:
$transaction=$connection->beginTransaction(); //开始事务
try {
$connection->createCommand($sql1)->execute();
$connection->createCommand($sql2)->execute();
//.... other SQL executions
$transaction->commit();//提交事务
} catch(Exception $e) // 如果有一条查询失败,则会抛出异常 {
$transaction->rollBack();//事务回滚
// $apply_arr['errorCode'] = '106'; //数据添加/更新失败
// $apply_arr['data']['reason'] = $e->getMessage();
// 或 echo $e->getMessage();
}
二. 使用 AR 处理事务
每个 AR 实例都含有一个属性名叫 dbConnection ,是一个 CDbConnection 的实例,这样我们可以在需要时配合 AR 使用由 Yii DAO 提供的 事务 功能:
$model=Post::model();$transaction=$model->dbConnection->beginTransaction();try{ // 查找和保存是可能由另一个请求干预的两个步骤 // 这样我们使用一个事务以确保其一致性和完整性 $post=$model->findByPk(10); $post->title='new post title'; $post->save(); $transaction->commit();}catch(Exception $e){ $transaction->rollBack();}
注意:
1:上面开始事务中:红色部分其实都是CDbconnection的实例,
即可以用这种写法:$transaction = Yii::app()->db->beginTransaction();
- Yii 异常处理、事务回滚
- 异常、事务回滚
- 事务回滚处理
- spring 回滚事务 异常处理 手动回滚 公司通用处理方式
- Spring事务异常回滚
- Spring事务异常回滚
- spring异常与事务回滚
- 异常类型 && spring事务回滚
- Spring事务和异常回滚
- Spring事务回滚和异常类
- activemq 事务--遇到异常始终回滚
- Struts2 OSIV模式下的异常处理及事务回滚解决方案
- Nhibernate中的连接超时时事务回滚引发异常的处理方法
- EJB3.0 中事务的处理自定义异常类并回滚
- 新公司的异常回滚处理
- java事务异常——Spring事务异常回滚,捕获异常不抛出就不会回滚
- java事务异常——Spring事务异常回滚,捕获异常不抛出就不会回滚
- Spring事务异常回滚,捕获异常不抛出就不会回滚
- 密码学:生日攻击
- Selector
- C++中实现字符串分割方法
- ShareData
- 正则表达式
- Yii 异常处理、事务回滚
- Linux操作系统:文件系统
- windows生成dump文件
- CSS常见属性
- Makefile 知识经典总结
- 代码 laravel发邮件
- Day38、引用、引用与指针、类型转换(隐式、显式)、类和对象、构造函数、对象的创建和销毁、电子时钟
- laravel 框架的文件上传
- Float浮动和position定位