En lugar de rand()
, usa newid()
, que se vuelve a calcular para cada fila del resultado. La forma habitual es utilizar el módulo de la suma de comprobación. Tenga en cuenta que checksum(newid())
puede producir -2,147,483,648 y causar un desbordamiento de enteros en abs()
, por lo que debemos usar el módulo en el valor devuelto de la suma de comprobación antes de convertirlo en un valor absoluto.
UPDATE CattleProds
SET SheepTherapy = abs(checksum(NewId()) % 10000)
WHERE SheepTherapy IS NULL
Esto genera un número aleatorio entre 0 y 9999.