5

次の 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 構文にエラーがあります。1 行目の「if (@a > 1) then COMMIT」の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

私はスタックオーバーフローを見てきましたが、ほぼ同じ方法で書かれた同様のクエリを示す回答@がありますが、シンボルなしで変数を使用しています。for my query を削除して@も問題は解決しません。

これは、MYSQL を使用していくつかのトランザクションを試すための単なるテスト クエリであるため、クエリが少し無意味に見えるのはなぜですか。私は少し立ち往生しています。

4

1 に答える 1