Bonjour à tous,
J'ai réalisé le petit test suivant :
Je suis sous XP sp2, Firebird et j'utilise les composants IBO (TIBOQuery)
J'ai une seule table TEST avec deux champs CODETEST(clé primaire)
et MOT (char de 20) dans ma base placée sur un serveur.
Un générateur et un trigger sont mises en place dans la base et
le composant Query a été également paramétré (Relation,GeneratorLinks etc)
J'ai crée une mini appli (en client serveur) avec deux boutons ajout et valider
et le code est en mode transactionnel.
un petit formulaire avec deux champs DB (un pour le CODETEST non accessible et un autre pour le champ MOT)
On ne peut pas faire plus simple..
L'isolation est : tiCommitted
La connexion se fait bien et les validations aussi.
Mais, j'ai voulu faire un test de simultanéité..(histoire de voir..)
C'est-à-dire que seuls deux utilisateurs connectés ont fait dans la 1/2 seconde un clic sur le bouton valider.
Et bing, un seul des deux a pu valider, l'autre (le plus en retard) ramasse une
violation de clé primaire !
J'ai donc refait un test afin de vérifier les chiffres du compteur et j'ai constaté qu'ils étaient bien différents avec un écart de 1 au moment des deux clics.
Pourquoi donc cette violation ?
Il y a quelque chose que j'ai vraisemblablement oublié et qui m'échappe..
Merci de me donner un coup de main.
cantador
Partager