У меня есть следующий MYSQL запрос:MYSQL Если оператор в транзакции вызывает ошибки
START TRANSACTION;
SELECT sport_id INTO @a FROM sports WHERE sport_id = 2 FOR UPDATE;
UPDATE sports SET sport_name = 'Table Tennis' WHERE sport_id = @a;
if (@a > 1) then
COMMIT;
ELSE
ROLLBACK;
END IF;
Проблема заключается в том, что она возвращает ошибку в если заявление:
# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса использовать вблизи «если (@a> 1), а затем COMMIT» в строке 1
Я смотрел на переполнение стека и есть answer showing a similar query, написанные практически так же, но они используют переменную без символа @
. Удаление @
для моего запроса не решает проблему.
Это всего лишь тестовый запрос, чтобы опробовать некоторые транзакции с использованием MYSQL, поэтому запрос кажется немного бессмысленным. Я немного застрял.
Спасибо за комментарий. Я только что попробовал поставить BEGIN END вокруг утверждения, и он по-прежнему сталкивается с той же ошибкой. Можете ли вы порекомендовать, где я должен поставить инструкции BEGIN и END для решения проблемы? – Luke
Синтаксис BEGIN ... END используется для записи составных операторов, которые могут отображаться в хранимых программах (хранимые процедуры и функции, триггеры и события). http://dev.mysql.com/doc/refman/5.5/en/stored-programs-defining.html – spencer7593
Или вы можете попробовать использовать оператор case : http://dev.mysql.com/doc/refman/ 5,0/о/поток управление-functions.html –