Я использую операторы try catch почти в каждом из моих операторов вставки или обновления на сайте, построенном на PHP и MySQL. В случае чего-то вроде:
try {
//do insert or update
}
catch (PDOException $e) {
$db->rollback();
//do something with error $e
}
в этом примере, если произойдет ошибка, все, что было сделано с БД, будет откатано (изменения отменены), и все будет "хорошо". Однако я не уверен, как справляться с ситуациями, когда в одной попытке / перехвате существует несколько операторов вставки или обновления - как даже несколько попыток / перехватов на одной странице.
В конечном итоге я пытаюсь решить: если в скрипте обнаружена ошибка, которая не позволяет завершить один оператор вставки / обновления (try / catch), откатить изменения, внесенные во ВСЕ таблицы в этом конкретном скрипте.
Есть ли надежный способ сделать это?