Создать новый 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 будет создан и назначен только в том случае, если он еще не был.