Откат mysql запросов при возникновении ошибки запроса в последовательности

Рейтинг: -1Ответов: 1Опубликовано: 27.10.2014

Доброй ночи. Как правильно обработать следующую ситуацию:

function Example($new_login, $old_login, $new_lastname)
{
  $Query1 = Mysql_query('UPDATE `user` SET `login`='{$new_login}' ');
  if(mysql_affected_rows() == false) die('Здесь произошла ошибка, не удалось обновить логин в баз');

  $Query2 = Mysql_query('UPDATE `user` SET `lastname`='{$new_lastname}' ');
 if($Query2 == true) die('Всё ок, все запросы выполнились');
 // Не удалось обновить имя пользователя в базе, нужно вернуть старый логин на место!!

$Query1 = Mysql_query('UPDATE `user` SET `login`='{$old_login}' ');
// Вроде-бы вернули, НО! Что делать если этот запрос тоже по каким-то причинам не выполнился?
}

Интересует ответ на вопрос: как откатить предыдущие запросы, если следующий запрос не выполнился, ведь этот запрос тоже может не выполниться? Некая матрёшка получается, ну или рекурсия... )

Ответы

▲ 1

Одна табличка, а почему не выполнить эти 3 запроса в одном? Там в случае неправильности запрос не выполнится вообще.