我目前使用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。