Я пытаюсь использовать транзакцию в хранимой процедуре MySQL.
В частности, обновите пользовательскую таблицу с измененными данными из временной записи.с другого стола.затем после передачи удалите временную запись.
Я создал приведенный ниже код, который при выполнении возвращает строку «транзакция завершилась успешно».
Однако фактически ничего не обновляется и временная записьНе удаляется.
Оба SQL-оператора, когда выполняются отдельно, работают отлично. Первый обновляет, второй удаляет.
Может кто-нибудь просветить меня, что может быть не так??
BEGIN
-- set a default response
DECLARE response varchar(48) DEFAULT "the transaction has failed.";
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
-- set vars
SET response = "the transaction has failed, you may have already updated the account.";
select response;
END;
START TRANSACTION;
-- we are inserting data, using information from another table
update user, updateUserNamesAndNumbers
SET user.firstName = updateUserNamesAndNumbers.firstName,
user.lastName = updateUserNamesAndNumbers.lastName,
user.landline = updateUserNamesAndNumbers.landline,
user.mobile = updateUserNamesAndNumbers.mobile
WHERE
updateUserNamesAndNumbers.uuid = transferCode
AND
updateUserNamesAndNumbers.userId= user.user_id
;
-- finally delete the original tuple
DELETE from updateUserNamesAndNumbers
where uuid= transferCode ;
SET response="The transaction has succeeded";
COMMIT;
ВЫБРАТЬ ответ;
END