InTransaction())
// - если находится, то выбрасываем исключение.
throw new PDOException("Транзакция уже начата! / Transaction already started!");
// Начинаем транзакцию
$isSuccess = $this->DataBaseHandle->beginTransaction();
// Если транзакция не началась
if (!$isSuccess)
// - то выбрасываем исключение.
throw new PDOException("Ошибка при начале транзакции! / Transaction start error!");
}
/**
* Проверяет, находится ли текущая транзакция в процессе.
*
* @return bool Результат проверки: true
- в процессе, false
- нет.
*/
public function InTransaction (): bool
{
return $this->DataBaseHandle->inTransaction();
}
/**
* Отправляет транзакцию в базу данных.
*
* @return void
* @throws PDOException Если транзакция не начата или не отправлена.
*/
public function Commit (): void
{
// Проверка, не находится ли текущая транзакция в процессе
if (!$this->InTransaction())
// - если нет, то выбрасываем исключение.
throw new PDOException("Транзакция не начата! / Transaction not started!");
// Отправляем транзакцию в базу данных
$isSuccess = $this->DataBaseHandle->commit();
// Если транзакция не отправлена
if (!$isSuccess)
// - то выбрасываем исключение.
throw new PDOException("Ошибка при отправке транзакции в базу данных! / Transaction send error!");
}
/**
* Откатывает транзакцию.
*
* @return void
* @throws PDOException Если транзакция не начата или не откатана.
*/
public function RollBack (): void
{
// Проверка, не находится ли текущая транзакция в процессе
if (!$this->InTransaction())
// - если нет, то выбрасываем исключение.
throw new PDOException("Транзакция не начата! / Transaction not started!");
// Откатываем транзакцию
$isSuccess = $this->DataBaseHandle->rollBack();
// Если транзакция не откатана
if (!$isSuccess)
// - то выбрасываем исключение.
throw new PDOException("Ошибка при откате транзакции! / Transaction rollback error!");
}
}