Откат неудачного SQL-запроса

Я пытаюсь реализовать функцию 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

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

tadman 31.07.2018 21:46

Код SQL выглядит нормально, вы определили обработчики EXIT для SQLEXCEPTION и SQLWARNINGS. если первое ОБНОВЛЕНИЕ не имеет ничего из вышеперечисленного, соответствующий обработчик выхода включится и ОТКАТИТ первое обновление и завершит выполнение. Второй запрос ОБНОВЛЕНИЯ может выполняться только тогда, когда первое обновление выполняется без SQLEXCEPTIONS и SQLWARNINGS.

Raymond Nijland 31.07.2018 22:09

Пожалуйста, кто-то предложил мне отключить автоматическую фиксацию, как это поможет?

shekwo 01.08.2018 00:45
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
3
40
0

Другие вопросы по теме