Captain
@Captain

Поясните как работают транзакции в Joomla (InnoDB)?

Все классические примеры работы с транзакциями идут в упрощенном виде:
try{
  startTransaction
  query
  commitTransaction
}
catch()
{
  rollbackTransaction
}

В реальной жизни все сложнее. В Joomla, насколько я понимаю, есть singleton объект JDatabase, т.е. на этапе обращения запроса к серверу, создается одно соединение. Правильно ли я понимаю, что вот такой код будет работать аналогично:
try{
  startTransaction
  Метод1_который_читает_и_пишет_в_БД
  result = Метод2_который_читает_и_пишет_в_БД
  if(result === false)
  {
    rollbackTransaction
  }
  Метод3_который_читает_и_пишет_в_БД
  commitTransaction
}
catch()
{
  rollbackTransaction
}

Т.е. все изменения, которые были внесены этими методами будут откачены или закоммичены.

И еще уточнение, в Joomla транзакция стартует по умолчанию как START TRANSACTION WITH CONSISTENT SNAPSHOT?
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы