TP3.2数据处理,事物回滚
我在项目中遇到了事物不回滚,部分回滚,各种问题。下面是代码,这小程序PHP接口代码已经测试,可以正常回滚。
tp事物回滚:
$model=M('myself_audio');
//事物开启
$model->startTrans();
$list=$model->where('id='.$myself_audio_id)->delete();
if(!$list){
//事物回滚
$model->rollback();
}
$id = M('thumb')->field("id")->where('myself_audio_id='.$myself_audio_id)->select();
foreach ($id as $val=>$vl){
$ids[]=$vl['id'];
}
$idd=implode(",",$ids);
$where['id']=array("in",$idd);
$lists = M('thumb')->where($where)->delete();
if(!$lists){
//事物回滚
$model->rollback();
}
//事物提交
$model->commit();
$model->commit();
$this->ajaxReturn(array("code"=>200,"msg"=>"删除成功"));
1、有时我们遇到事物不执行,检查代码好像没错,我想最好去检查一下数据库可能没有将MyISAM改为InnoDB,这是很容易忽略的地方,
2、有时我们遇到事物执行部分或不执行,我想最好去检查一下有没有将select查询加入事物回滚,这是也是很容易忽略的地方,例如:$list=$model->where('id='.$myself_audio_id)->select();这是错误的,
平时有时明知道怎么做但是就是有程序报错,每个人都是踩着坑过来的。这里写的不好,希望对大家有帮助。