Em vez de
rand()
, use newid()
, que é recalculado para cada linha no resultado. A maneira usual é usar o módulo da soma de verificação. Observe que checksum(newid())
pode produzir -2.147.483.648 e causar estouro de inteiro em abs()
, portanto, precisamos usar o módulo no valor de retorno da soma de verificação antes de convertê-lo em valor absoluto. UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Isso gera um número aleatório entre 0 e 9999.