Alih-alih rand()
, gunakan newid()
, yang dihitung ulang untuk setiap baris dalam hasil. Cara yang biasa adalah dengan menggunakan modulo dari checksum. Perhatikan bahwa checksum(newid())
dapat menghasilkan -2.147.483.648 dan menyebabkan integer overflow pada abs()
, jadi kita perlu menggunakan modulo pada nilai kembalian checksum sebelum mengubahnya menjadi nilai absolut.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Ini menghasilkan angka acak antara 0 dan 9999.