In plaats van rand()
, gebruik newid()
, die voor elke rij in het resultaat opnieuw wordt berekend. De gebruikelijke manier is om de modulo van de controlesom te gebruiken. Merk op dat checksum(newid())
kan -2.147.483.648 produceren en integer overflow veroorzaken op abs()
, dus we moeten modulo gebruiken op de checksum-retourwaarde voordat we deze naar absolute waarde converteren.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Dit genereert een willekeurig getal tussen 0 en 9999.