Salut tous les maîtres de Blackbelt SQL Server là-bas.SQL 2005/8 mise à jour Quirky "arts noirs"
J'ai une question simple que je dois résoudre. J'essaye de faire une mise à jour excentrique sur une table. structure spécifique de la table n'est pas important et mon problème peut essentiellement être réduit à la suivante:
update SalesTotal
set @total = total = @total + sales,
@flag = flag = case when @flag = 1 then 0
when @total > x then 1
else 0 end
La question est je peux faire confiance à cette variable @total aura une nouvelle valeur à savoir. s'exécutera avant la deuxième partie de l'ensemble, ou contiendra-t-il une "ancienne" valeur (de l'assignation précédente) ou est-elle indéfinie. Je poursuis ce problème depuis un certain temps, et je ne trouve pas de solution et c'est vraiment important pour ma mise à jour (je veux mettre à jour une table en une fois). L'une des valeurs que je veux mettre à jour dépend de la valeur de l'autre (dans la même ligne), donc la seule façon de travailler dans une seule mise à jour est de savoir si cela fonctionne.
espère que vous pouvez me aider
Serait-il possible de fournir la table et les variables avant et après la mise à jour? –
Jeff Moden, qui a répondu ci-dessus, a écrit le meilleur article que j'ai vu sur le sujet. http://www.sqlservercentral.com/articles/T-SQL/68467/ La réponse est oui. Mais certaines conditions doivent être remplies. Lire l'article. – geoffrobinson