Thinkphp 事务不起效

浏览:3129 发布日期:2016/10/13 分类:求助交流 关键字: mysql 事物 commit rollback
PHP代码public function StrategyAddAction()
    {
        //$trans=M();
        //$trans->startTrans();
        $strdata=$_POST["data"];
        $strategy_Adpter=M("TStrategyMain");
        $strategy_Adpter->startTrans();
        $strategy_Adpter->create();
        $strategydetail_Adpter=M("TStrategyDetail");
        
        $strategy_Adpter->name=$strdata["srcsn"];
        $strategy_Adpter->eqsn=$strdata["srcsn"];
        $strategy_Adpter->smartmac=$strdata["srcsn"];
        $strategy_Adpter->eventcode=$strdata["srceventid"];
        $lastmainid=$strategy_Adpter->add();
        
        //$strategy_Adpter->rollback();
        $lastdetailid=true;
        
         if($lastmainid!=false){
            foreach ($strdata["destlist"] as $eq) {
                if($lastdetailid==false){
                    break;
                }
                
                foreach ($eq["eventArray"] as $event) {
                    $strategydetail_Adpter->create();
                    $strategydetail_Adpter->mainid=22222;//$lastmainid;外键插入失败
                    $strategydetail_Adpter->eqsn=$eq["sn"];
                    $strategydetail_Adpter->smartmac=$eq["mac"];
                    $strategydetail_Adpter->eventcode=$event["id"];
                    $lastdetailid=$strategydetail_Adpter->add();
                    if($lastdetailid==false){
                        break;
                    }
                }
            }
        } 
                
        if (($lastdetailid&&$lastmainid)!=false){
            $strategy_Adpter->commit();
            $resultArr=array("state"=>true,"message"=>"ok");
        }else{
            $strategy_Adpter->rollback();
            $resultArr=array("state"=>false,"message"=>"failure");
        }  
    }
数据库CREATE TABLE `t_strategy_main` (
  
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
回头来搞这个项目。
每次主表保存完,数据库里就有数据了,之后的Detail 保存失败回滚不起效。
TP版本是3.2.3 php 5.6.23 mysql Ver 14.14 Distrib 5.7.13
最佳答案
评论( 相关
后面还有条评论,点击查看>>