«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как добиться транзакционного поведения в хранимых процедурах MySQL?

Как добиться транзакционного поведения в хранимых процедурах MySQL?

Опубликовано 12 ноября 2024 г.
Просматривать:950

How to Achieve Transactional Behavior in MySQL Stored Procedures?

Транзакционные хранимые процедуры в MySQL

Выполнение нескольких операторов SQL транзакционным способом внутри хранимой процедуры гарантирует, что все операторы выполняются успешно или ни одного вообще выполнить. Такое поведение имеет решающее значение для поддержания согласованности и целостности данных. Вот как вы можете выполнять транзакции в хранимой процедуре MySQL:

Коррекция синтаксических ошибок

В предоставленном вами фрагменте кода есть две синтаксические ошибки, которые препятствуют выполнению хранимой процедуры. от превращения в транзакционный. Правильный синтаксис следующий:

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
    ROLLBACK;
END;

Этот код объявляет обработчик выхода, который автоматически откатывает любые изменения, если во время выполнения хранимой процедуры возникает исключение или предупреждение SQL. Запятые между условиями обработчика выхода и точка с запятой в конце инструкции DECLARE имеют решающее значение для правильного функционирования хранимой процедуры.

Пример

Один раз синтаксические ошибки исправлены, хранимую процедуру можно сделать транзакционной, включив операторы SQL в блок START TRANSACTION...COMMIT. Вот пример транзакционной хранимой процедуры:

BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
    ROLLBACK;
END;

START TRANSACTION;

    -- Your SQL statements here

COMMIT;

END

Использование

Чтобы использовать транзакционную хранимую процедуру, просто вызовите ее из кода приложения как обычную хранимую процедуру. Если все инструкции SQL в хранимой процедуре выполняются успешно, инструкция COMMIT сделает эти изменения постоянными в базе данных. Если произойдет какое-либо исключение или предупреждение SQL, оператор ROLLBACK автоматически отменит все изменения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3