Я понимаю, что в SQL Server идентификаторы GUID НАИБОЛЕЕ уникальны, а также что вероятность столкновения невелика, но в то же время кто-то должен выиграть в лотерею, поэтому я чувствую, что имеет смысл подготовиться к такой возможности.
Что быстрее / лучше практики
Используя технику, в которой я назначаю новый GUID напрямую, просто вставляя строку и проверяя на наличие ошибки (@@ ERROR <> 0) и повторяя до тех пор, пока не получу ошибку [которую, я полагаю, в теории, будет только при худший раз будет ...]
или используя такой подход
DECLARE @MyGUID uniqueidentifier
SELECT @MyGUID = NewID()
if exists(select * from tablename where UserID=@MyGUID)
и перебираю это, пока не найду тот, который не используется.
Мне нравится 2-й подход, потому что тогда у меня может быть GUID для использования в Хранимой процедуре, поэтому я сейчас склоняюсь к этому.