2016-11-28 24 views
0

mysqlで@variableにアクセスする際に、Springフレームワークと同じ接続オブジェクトを使用する場合。すべてのユーザーにとって一般的なので、スレッドセーフではない変数のように見えます。 mysqlのユーザ定義変数の代わりに@variableを使用する方法。ユーザ定義の@variableをMysqlのスレッドセーフとして使用する方法

同じ接続オブジェクト内のスレッドセーフで、以下のものの代替クエリ。

select 
@num := (@num + 1) as row_number 
from 
user u, 
(select @num := 0); 

答えて

1

を含む(select @num := 0)は、クエリの先頭に変数を初期化します。ユーザー定義変数のスコープは個々の接続に限定され、接続は一度に1つのクエリしか実行できないため、この特定のケースは完全に「スレッドセーフ」です。

ただし、ハックのビットです。

http://dev.mysql.com/doc/refman/5.7/en/user-variables.html

関連する問題