Bonjour à tous,

je développe une application Silverlight 3 exploitant RIA Services pour l'accès aux données dans une base SQL Server 2005.

Dans cette application, je dispose d'un écran principal doté d'un bouton, lors du clic sur ce bouton je dois générer un incrément unique (un entier); ce dernier est en fait un champ d'une table en BDD qui est incrémenté puis renvoyé via une procédure stockée du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
UPDATE MaTable
SET MonIncrement=MonIncrement+1
 
SELECT MonIncrement
FROM MaTable
Mon problème est que lorsque deux utilisateurs cliquent sur le bouton "relativement" en même temps... ils ont le même n° d'incrément !

Qu'à cela ne tienne, j'ai :
- encapsulé les deux opérations au sein d'une transaction (aucun effet)
- apposé des verrous exclusifs (with (tablockx)) sur les 2 opérations (update et select) : j'ai toujours le même incrément pour les différentes exécutions, mais incrémenté de 2 et non plus de 1
- spécifié un niveau d'isolation serializable à la transaction... rien n'y fait !

J'y perds un peu mon latin et doit avouer que là je commence à être à court de solution... à moins de passer par un auto-incrément en base directement mais ce n'est pas le process demandé. Des idées ?