- 7
- 0
- 约1.43千字
- 约 2页
- 2019-08-18 发布于北京
- 举报
Yii异常处理、事务回滚.PDF
Yii 异常处理、事务回滚
一:DAO 使用事务
当一个应用要执行几条查询,每条查询要从数据库中读取并/或向数据库中写入信息时,
保证数据库没有留下几条查询而只执行了另外几条查询是非常重要的。 事务,在 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();
内容参考:
/doc/guide/1.1/zh_cn/database.dao#sec-5
/doc/guide/1.1/zh_cn/database.ar#sec-10
/content/view/id/1.html
/blog/1560116
手机访问 关注微信
您可能关注的文档
最近下载
- 唐诗三百唐诗300首大全.pdf VIP
- 2017款比亚迪唐_汽车使用手册用户操作图解驾驶车主车辆说明书电子版.pdf
- 包装车间主任个人工作总结8篇.docx VIP
- 把财产留独生子女遗嘱范文.docx VIP
- 河南省养猪行业企业名录2018版7354家.pdf VIP
- 汇川inovance MD605系列紧凑型变频器功能手册.PDF VIP
- 2024年全国有机食品行业企业名录4354家.pptx VIP
- T CHATA 029—2023 住院结核病患者营养筛查与评估.pdf VIP
- 2026《隧道贯通误差预计计算案例》4000字.docx
- (JTJ215-98)港口工程荷载规范.pdf VIP
原创力文档

文档评论(0)