Создать новый GUID в SQL Server, если он не предоставляется

Я обновляю свою базу данных, чтобы иметь столбец для GUID для каждой записи в таблице.

Эта таблица заполняется несколькими разными источниками, и некоторые из них не будут содержать идентификатор GUID для новых записей.

Как я могу заполнить этот столбец с помощью newid() на стороне БД, только если для новой записи не было значения?

Ответ 1

НЕ ПОВТОРЯЙТЕ, НЕ РАЗМЕЩАЙТЕ КОЛЬЦУ DEFAULT NEWID(). Если вы сделаете GUID, который вы получите, будет полностью случайным, и если у вас будет какая-либо индексация в этом столбце, это будет бесполезно. Если вы сделаете это, вы хотите установить для столбца по умолчанию значение NEWSEQUENTIALID ( )

У Кимберли Триппа есть Великая статья, а другая Великая статья по этому вопросу.

Чтобы реализовать NEWSEQUENTIALID ( ) по умолчанию:

CREATE TABLE foo
(unq_id UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
 cola varchar(10));

Полный пример скрипта SQL..

Ответ 2

Вы можете установить значение по умолчанию для столбца NEWID(). Тогда GUID будет создан и назначен только в том случае, если он еще не был.