2016-11-28 50 views
0

當使用Spring框架中的相同連接對象訪問mysql中的@variable時。這對所有的用戶來說都很常見,所以看起來好像不是線程安全變量在查詢中使用。如何在mysql中使用用戶定義變量的變量@variable。如何在Mysql中使用用戶定義的@variable作爲線程安全

下面的替代查詢在同一連接對象中具有線程安全。

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

回答

1

包括(select @num := 0)在查詢開始時初始化變量。用戶定義的變量的作用範圍是單個連接,而連接一次只能運行一個查詢,所以這個特定的情況完全是「線程安全的」。

但是,這也是一個黑客。

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

相關問題