Проблемът OP имах, докато използвах само rand()
се дължи на неговата оценка веднъж на заявка .
От документация :
Подходът, описан по-долу, премахва оптимизацията и потиска това поведение, така че rand()
се оценява веднъж на ред :
dateadd( second
, rand(cast(newid() as varbinary)) * 43200
, cast('08:00:00' as time) )
newid()
генерира уникална стойност от типuniqueidentifier
;- стойността се преобразува с
cast
да се използва като семе вrand([seed])
функция за генериране на псевдослучаенfloat
стойност от 0 до 1 и като семе винаги е уникален, връщаната стойност също е уникална.