openedTransaction ) { return parent::beginTransaction(); } return $this->exec('SAVEPOINT transaction_'.$this->openedTransaction) !== false; } public function commit() : bool { if ( 0 === --$this->openedTransaction) { return parent::commit(); } return false; } public function rollback() : bool { if (0 !== $this->openedTransaction) { return $this->exec('ROLLBACK TO transaction_' . $this->openedTransaction--) !== false; } return parent::rollback(); } }