Откат mysql запросов при возникновении ошибки запроса в последовательности
Доброй ночи. Как правильно обработать следующую ситуацию:
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}' ');
// Вроде-бы вернули, НО! Что делать если этот запрос тоже по каким-то причинам не выполнился?
}
Интересует ответ на вопрос: как откатить предыдущие запросы, если следующий запрос не выполнился, ведь этот запрос тоже может не выполниться? Некая матрёшка получается, ну или рекурсия... )
Источник: Stack Overflow на русском