2010-12-09 9 views
2

Nous avons développé un quiz en ligne où les utilisateurs peuvent inscrire une équipe pour participer au quiz.insertions web en même temps

Il y a une vérification dans l'ASP pour voir si ce nom d'équipe a déjà été soumis, et si c'est le cas, une erreur est générée.

Nous avons remarqué un problème si 2 équipes sont enregistrées exactement au même moment avec le même nom, que les deux équipes sont enregistrées. Bien que cela soit hautement improbable, nous nous sommes demandé quelle approche devrait être utilisée pour surmonter cela.

Nous utilisons mySql comme base de données si cela fait une différence.

Merci pour toute indication.

Répondre

0

Vous ne savez pas comment deux équipes peuvent s'inscrire exactement au même moment - même si les demandes sont soumises simultanément (jusqu'à la nanoseconde), votre sémantique de transaction doit toujours garantir que l'une d'entre elles est "première". vue.

1

Ne vous inquiétez pas, cela n'arrive jamais.

Les bases de données sont assez intelligentes et gèrent les problèmes d'accès concurrents. Si vous lancez une requête sur la base de données pour enregistrer une équipe et un autre registre d'équipe en même temps, la première requête (quand elle est envoyée à la base de données) réussit et la seconde échoue avec une erreur dont vous devez prendre soin de. Si l'inscription nécessite plus d'actions qu'une insertion simple sur une table, vous devez utiliser des objets de transaction dans vos requêtes/procédures-magasin.

1

Vous pouvez définir la colonne de nom comme unique et la base de données émettra une erreur sur la deuxième insertion. Si vous voulez le faire en code, ce sera plus compliqué.

Questions connexes