Au lieu de rand() , utilisez newid() , qui est recalculé pour chaque ligne du résultat. La manière habituelle est d'utiliser le modulo de la somme de contrôle. Notez que checksum(newid()) peut produire -2 147 483 648 et provoquer un débordement d'entier sur abs() , nous devons donc utiliser modulo sur la valeur de retour de la somme de contrôle avant de la convertir en valeur absolue.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Cela génère un nombre aléatoire entre 0 et 9999.