mysql では、接続が閉じられるまで存続するユーザー定義変数に @ を使用します。Java では、複数のスレッドが 1 つの接続プールを共有しているときに、同時にストアド プロシージャを呼び出してランキングを取得します。
BEGIN
SET @rank := 0;
SELECT @rank := @rank + 1 as rank FROM ...
END
@rank を同期せずに 2 つのスレッドが同時にプロシージャを呼び出している場合、@rank が予期しない結果を返す可能性はありますか?
この状況を処理するためのより良い方法はありますか?
ありがとう!