public function beginTransaction()
    {
        if ($this->currentTransactionLevel == 0 || !$this->nestable()) {
            parent::beginTransaction();
        } else {
            $this->exec("SAVEPOINT LEVEL{$this->currentTransactionLevel}");
        }
        ++$this->currentTransactionLevel;
        return true;
    }