Я пытаюсь реализовать функцию ROLLBACK в моей хранимой процедуре, которая выполняет 2 запроса UPDATE. Я хочу, чтобы второе обновление запускалось только в том случае, если первое обновление было успешным. Также, если второе обновление не удается, должен быть откат первого оператора обновления. Я сделал следующее, но мне нужно подтвердить от вас, ребята, в порядке ли то, что я написал. Вот моя хранимая процедура
BEGIN
declare exit handler for sqlexception
BEGIN
rollback;
END;
declare exit handler for sqlwarning
BEGIN
rollback;
END;
START transaction;
FIRST UPDATE
SECOND UPDATE
COMMIT;
SELECT FOUND_ROWS() INTO res;
END
Код SQL выглядит нормально, вы определили обработчики EXIT для SQLEXCEPTION и SQLWARNINGS. если первое ОБНОВЛЕНИЕ не имеет ничего из вышеперечисленного, соответствующий обработчик выхода включится и ОТКАТИТ первое обновление и завершит выполнение. Второй запрос ОБНОВЛЕНИЯ может выполняться только тогда, когда первое обновление выполняется без SQLEXCEPTIONS и SQLWARNINGS.
Пожалуйста, кто-то предложил мне отключить автоматическую фиксацию, как это поможет?






Протестируйте и узнайте. Когда вы имеете в виду «успешно», вы имеете в виду «завершено без ошибок» или «фактически обновленные строки»?