我有一個node.js服務器,它使用node-mysql連接池來查詢MySQL數據庫。如何防止MySQL用戶定義的變量碰撞
我需要使SELECT
查詢使用用戶定義的變量來添加以前的行的總和。查詢之前,我SET
的變量初始化爲0。
SET @sum:=0;
SELECT *, @sum := @sum + `value` AS SUM FROM `table`;
查詢按預期工作,但我很擔心,如果有在同一時間多個請求我的節點服務器會發生什麼。服務器將進行多個查詢。他們會碰撞並相互影響,每增加一個變量嗎?如果是的話,我該如何預防呢?
最好的情況是將變量的範圍限制在一個SELECT
查詢中。這將允許我刪除SET
聲明並在ISNULL
中包裝@sum
。因此,結果將是
SELECT *, @sum := ISNULL(@sum,0) + `value` AS SUM FROM `table`;
但我不知道如何使這個查詢@sum
年底末值和下一個查詢左極限範圍內,它不是null
等沒有關係再次從0遞增。
無論如何,我可以保留SET
,但需要確保使用相同連接的多個查詢不會相互影響。我不知道MySQL如何處理查詢,所以這可能不是問題,但我需要確定。
謝謝你的幫助!