/** * Rollback changes in a transaction. * @param string optional savepoint name * @return void */ public function rollback($savepoint = NULL) { $this->connected || $this->connect(); $event = $this->onEvent ? new Event($this, Event::ROLLBACK, $savepoint) : NULL; try { $this->driver->rollback($savepoint); $event && $this->onEvent($event->done()); } catch (Exception $e) { $event && $this->onEvent($event->done($e)); throw $e; } }