ThinkPHP 3.2.3 Mysql事务嵌套支持

浏览:2757 发布日期:2017/05/10 分类:系统代码
ThinkPHP 3.2.3 Mysql事务嵌套支持
需要修改三个文件
1、Library/Think/Model.class.php
代码如下,第1501行注释掉就好/**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        //$this->commit();
        $this->db->startTrans();
        return ;
    }
2、Library/Think/Db/Driver.class.php
代码如下: /**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        $this->transTimes++;
        $this->initConnect(true);
        if ( !$this->_linkID ) return false;
        //数据rollback 支持
        if ($this->transTimes == 1) {
            $this->_linkID->beginTransaction();
        }
        return ;
    }

    /**
     * 用于非自动提交状态下面的查询提交
     * @access public
     * @return boolean
     */
    public function commit() {
        if ($this->transTimes == 1) {
            $result = $this->_linkID->commit();
            $this->transTimes = 0;
            if(!$result){
                $this->error();
                return false;
            }
        } else {
            --$this->transTimes;
        }
        return true;
    }

    /**
     * 事务回滚
     * @access public
     * @return boolean
     */
    public function rollback() {
        if ($this->transTimes == 1) {
            $result = $this->_linkID->rollback();
            $this->transTimes = 0;
            if(!$result){
                $this->error();
                return false;
            }
        } else {
            --$this->transTimes;
        }
        return true;
    }
3、Library/Think/Db/Lite.class.php
代码如下: /**
     * 启动事务
     * @access public
     * @return void
     */
    public function startTrans() {
        $this->transTimes++;
        $this->initConnect(true);
        if ( !$this->_linkID ) return false;
        //数据rollback 支持
        if ($this->transTimes == 1) {
            $this->_linkID->beginTransaction();
        }
        return ;
    }

    /**
     * 用于非自动提交状态下面的查询提交
     * @access public
     * @return boolean
     */
    public function commit() {
        if ($this->transTimes == 1) {
            $result = $this->_linkID->commit();
            $this->transTimes = 0;
            if(!$result){
                $this->error();
                return false;
            }
        } else {
            --$this->transTimes;
        }
        return true;
    }

    /**
     * 事务回滚
     * @access public
     * @return boolean
     */
    public function rollback() {
        if ($this->transTimes == 1) {
            $result = $this->_linkID->rollback();
            $this->transTimes = 0;
            if(!$result){
                $this->error();
                return false;
            }
        } else {
            --$this->transTimes;
        }
        return true;
    }
评论( 相关
后面还有条评论,点击查看>>