Вместо rand()
, използвайте newid()
, което се преизчислява за всеки ред в резултата. Обичайният начин е да използвате модула на контролната сума. Обърнете внимание, че checksum(newid())
може да произведе -2,147,483,648 и да причини преливане на цяло число в abs()
, така че трябва да използваме modulo за връщаната стойност на контролната сума, преди да я преобразуваме в абсолютна стойност.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Това генерира произволно число между 0 и 9999.