Bonjour,
Des collègues mon rapporté un bug assez bizarre.
Voici le scénario du script.
1 - Ouverture d'un transaction
2 - Insertion de 1000 lignes dans une table
3 - Exécution de ces trois requêtes : select count(*) from matable; select * from matable; select count(*) from matable;
4 - Commit de la transaction.
Le 3 SELECT à la suite n'affiche rien car il attend la fin de la transaction pour la table en question. Je précise que les 3 select s'execute depuis un autre ordinateur.
5 - Les 3 SELECT affiches les résultat suivant : 1:9xx; 2:1000 lignes; 3:1000 lignes
9xx c'est le faite que le premier SELECT COUNT n'affiche pas le bon nombre enregistré et ceci de façon aléatoire. Les deux suivantes affiche le bon nombre de données enregistré.
Si ils utilisent WHITH ROW LOCK il affiche bien 1000 lignes.
Quelqu'un aurait une explication de ce COUNT ou SELECT retournant un nombre aléatoire. Car même avec le SELECT * il retourne un nombre aléatoire. En faite la première requête après le COMMIT est fausse.
Merci
Partager