Salut à tou(te)s !
Voici la situation:
-j'ai un serveur mysql5.5 fraichement installé et configuré. Ainsi que mysql workbench.
-j'ai créé une BDD (moteur innoDB) contenant une table. Dans cette table j'ai une clé formée par un couple (vendor_id, service_id), plus un autre champs qui représente un numéro de série en fonction du couple précédent.
-Le but est de se connecter à la table en question (depuis un client C#) et de pouvoir récupérer un numéro de série puis l'incrémenter. Le numéro de série doit être unique.
ça se complique dès que je veux passer à plusieurs clients qui demandent des numéros de série.
j'ai lancé par exemple deux clients qui demandent un numéro de série (Select sur le champs en question de la base) puis qui incrémentent la valeur du champ en question. Tout ça dans une boucle "for".
Les deux clients que j'ai lancé en simultané se sont jusqu'ici attribué des numéros de série déjà utilisés.
Le problème vient certainement du fait qu'il y a des accès concurrents et qu'entre la lecture du champ et sa mise à jour les autres clients accèdent au champ.
Je n'ai pas réussi pour le moment à locker la ligne entre le moment ou un client la lit et la modifie. De sorte que les autres clients ne puissent pas prendre une valeur non à jour.
J'espère que c'est assez clair, et que vous aurez des idées.
Bonne soirée, et merci d'avance !
Partager