我目前使用Sequelize的increment()
函數來遞增訂單號碼值的欄位。例如:.increment("order_no", { by: 1 });
#偶爾會有一個請求在同一秒鐘內同時到達我的API,導致重複的訂單號碼值出現。
有沒有辦法可以確保訂單號碼的遞增值是唯一的?我需要在事務中包裝increment
嗎?在建立訂單號碼後,是否應該隨機定時檢查是否有重複?不確定解決這個問題的正確方法。
根據Sequelize的文檔(https://sequelize.org/docs/v6/core-concepts/model-instances/#incrementing-and-decrementing-integer-values)
為了避免並發問題,Sequelize提供了遞增和遞減實例方法來遞增/遞減實例的值。
然而,儘管看起來這個方法有效,但在使用時仍然會得到重複的值。
我認為如果出現重複的訂單ID,你可以嘗試捕獲錯誤並重試操作,產生一個新的訂單ID。