Nombre unique sur Mysql

m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012 - 26 juin 2007 à 10:49
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012 - 26 juin 2007 à 11:26
Bonjour,

J'accède à une table Mysql stocké sur un site web via une appli VB
Dans mon appli je désire attribuer un nombre de manière unique, sachant que l'appli est multi-utilisateur.
Le nombre de référence stocké dans le champ mysql est de type médiumint.
Ce nombre est également formaté afin qu'il réponde aux besoins de l'appli (ex: 72xxxx)

Mon appli fonctionne ainsi :
- Lecture du nombre X dans la table mysql
- on fait X+1, on l'inscrit dans la table local
- on inscrit dans la table distance X+1

Durant les tests, 2 utilisateurs ont reçu le meme nombre
Comment faire autrement pour que cela n'arrive pas.

Merci d'avance

4 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juin 2007 à 11:00
Salut,
Peu etre devrait tu lire X et l'ecrire tout de suite dans la table distante , puis faire des UPdates.

@+: Ju£i?n
Pensez: Réponse acceptée
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
26 juin 2007 à 11:07
j'y ais pensé, c'est une piste, mais en cas d'erreur lors de l'ecriture dans ma base local.
j'aurais cramé un numéro (dans la table mysql) pour rien.

merci
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 juin 2007 à 11:10
Salut,
Sinon si c'ets possible:

- OUVRE UNE TRANSACTION

- Lecture du nombre X dans la table mysql
- on fait X+1, on l'inscrit dans la table local
- on inscrit dans la table distance X+1

- Si ERREUR DANS TOUT LE PROCESSUS => ROLLBACK DE LA TRANSACTION

- COMMIT ET FERME LA TRANSACTION

@+: Ju£i?n
Pensez: Réponse acceptée
0
m2rtech Messages postés 239 Date d'inscription mercredi 9 octobre 2002 Statut Membre Dernière intervention 20 février 2012
26 juin 2007 à 11:26
Re-salut,
la transaction dans ce cas ne sert à rien :
suposons que un utilisateur A prend le dernier numéro en meme temps qu'un B,
il qu'il ecrire quand bien meme à une seconde d'intervale, rien n'empeche l'ecriture vue la nature du champ.
par contre ta piste est bonne, si le champ n'est pas unique en faisant des insert into
et de paramétrer le champ en unique sans doublon.
effectivement lors de l'ecriture, une erreur se produirait dans ce cas.
et les transaction prendrais un interet evident.

j'avoue que ma piste ne me plait pas: car je devrais generer à chaque fois un nouveau numero sous la forme X+1
dans le seul but d'avoir le suivant.

merci de ton aide.
0