Místo rand()
, použijte newid()
, která se přepočítává pro každý řádek ve výsledku. Obvyklým způsobem je použití modulo kontrolního součtu. Všimněte si, že checksum(newid())
může vytvořit -2 147 483 648 a způsobit přetečení celého čísla na abs()
, takže musíme použít modulo na návratovou hodnotu kontrolního součtu, než ji převedeme na absolutní hodnotu.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Tím se vygeneruje náhodné číslo mezi 0 a 9999.