現在、Sequelize の increment()
関数を使用して、注文番号の値の列をインクリメントしています。例: .increment("order_no", { by: 1 });
場合によっては、リクエストが同じ 1 秒以内に同時に API に到着し、注文番号の値が重複することがあります。
注文番号の増分値が一意であることを確認する方法はありますか?トランザクションで increment
をラップする必要がありますか?注文番号を作成した後、重複がないかランダムかつ定期的に確認する必要がありますか?この問題を解決する正しい方法がわかりません。
Sequelize のドキュメントによると (https://sequelize.org/docs/v6/core-concepts/model-instances/#incrementing-and-decrementing-integer-values)
同時実行の問題を回避するために、Sequelize はインスタンスの値を増減するインクリメント インスタンス メソッドとデクリメント インスタンス メソッドを提供します。
ただし、この方法は機能するように見えますが、使用すると重複した値が取得されます。
重複した注文 ID がある場合は、エラーをキャッチして操作を再試行し、新しい注文 ID を生成できると思います。