我有以下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;
的問題是,它在if語句返回一個錯誤:
#1064 - 你有一個錯誤在你的SQL語法中;檢查對應於你的MySQL服務器版本的手冊正確的語法使用近「如果(@a> 1),然後提交」在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/EN /控制流-functions.html –