Maison  >  Questions et réponses  >  le corps du texte

Assurer le caractère unique de la valeur incrémentielle de Sequelize

J'utilise actuellement Sequelizeincrement()函数来递增订单号值的列。例如:.increment("order_no", { by: 1 });

Parfois, une requête arrive simultanément à mon API dans la même seconde, ce qui entraîne des valeurs de numéro de commande en double.

Existe-t-il un moyen de garantir que la valeur incrémentielle du numéro de commande est unique ? Dois-je envelopper increment dans la transaction ? Après avoir créé un numéro de commande, doit-on vérifier de manière aléatoire et régulière s'il y a des doublons ? Je ne suis pas sûr de la bonne façon de résoudre ce problème.

Selon la documentation de Sequelize (https://sequelize.org/docs/v6/core-concepts/model-instances/#incrementing-and-decrementing-integer-values)

Pour éviter les problèmes de concurrence, Sequelize fournit des méthodes d'incrémentation et de décrémentation d'instance pour incrémenter/décrémenter la valeur de l'instance.

Cependant, même si cette méthode semble fonctionner, vous obtenez toujours des valeurs en double lorsque vous l'utilisez.

P粉616111038P粉616111038379 Il y a quelques jours405

répondre à tous(1)je répondrai

  • P粉793532469

    P粉7935324692023-09-07 11:34:14

    Je pense que s'il y a un ID de commande en double, vous pouvez essayer de détecter l'erreur et réessayer l'opération, en générant un nouvel ID de commande.

    répondre
    0
  • Annulerrépondre