3.2.2代码中启用事务后先commit了一下,还有意义么?

浏览:2960 发布日期:2015/04/17 分类:求助交流 关键字: 事务 关联模型
模型类中startTrans()方法是这么写的:    /**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        $this->commit();
        $this->db->startTrans();
        return ;
    }
而在mysqli驱动(即$this->db)中是这样实现的:    /**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        $this->initConnect(true);
        //数据rollback 支持
        if ($this->transTimes == 0) {
            $this->_linkID->autocommit(false);
        }
        $this->transTimes++;
        return ;
    }
既然在Model类的startTrans()中已经提交了事务,那在Mysqli底层再通过$this->transTimes判断是不是需要启用事务还有啥意义?无论你在Model对象中调用几次startTrans(),都会是一个新的事务了!这直接导致关联模型的增删改和被关联模型事务的不统一!
最佳答案
评论( 相关
后面还有条评论,点击查看>>