SET Count = count + 1 est à mon humble avis la solution la plus simple ..
Plus généralement le concept d'être en mesure d'obtenir des données, traiter et alors que sa demande qu'il y ait traité aucun changement sous-jacents avant d'écrire les résultats de la Le traitement n'est habituellement pas raisonnable si vous avez également besoin d'un système évolutif. Vous pouvez bien sûr le faire et, dans de nombreux environnements, vous y parviendrez. Cependant, ces approches mettront des limites sévères à la visibilité et à la complexité d'une application avant que les problèmes de simultanéité rendent le système inutilisable. À mon humble avis, la meilleure approche consiste à prendre une route optimiste et à détecter/réessayer si, dans le cas d'un cas inhabituel, quelque chose qui vous intéresse change.
SELECT COUNT AS vieux ... DE ...
.. traitement ...
UPDATE ... SET Count = oldplus1 où le comte = vieux et ...
À moins UPDATE vous donne le nombre de lignes que vous attendez que vous supposiez que les données ont été modifiées et réessayez jusqu'à ce qu'il réussisse.
Avez-vous besoin de protéger également l'insertion d'une nouvelle étiquette? Cela complique généralement les choses * assez * un peu. –
mise à jour tag_data set count = count + @incrVal où tagId = @tagId – spencer7593