TP3.2数据处理,事物回滚

TP3.2数据处理,事物回滚 

事务处理(transaction processing)主要目的是用来维护数据库的完整性。它的概念网上有很多资料,我这里就不阐述了。

我在项目中遇到了事物不回滚,部分回滚,各种问题。下面是代码,这小程序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();这是错误的,

平时有时明知道怎么做但是就是有程序报错,每个人都是踩着坑过来的。这里写的不好,希望对大家有帮助。

猜你喜欢

转载自blog.csdn.net/weixin_37616043/article/details/80739415