Как БД может автоматически генерировать уникальные идентификаторы? - PullRequest
10 голосов
/ 24 ноября 2011

У меня есть таблица sql со столбцом id (guid). Как я могу заставить БД автоматически генерировать новый guid для каждой новой записи?

Ответы [ 3 ]

20 голосов
/ 24 ноября 2011

Добавить DEFAULT(newid()).

2 голосов
/ 25 ноября 2011

Используя подход DEFAULT (newid ()), как упоминалось в @SLaks, вы позволите любому изменять значение Guid из столбца Guid, и это может быть плохо.

Одним из подходов, позволяющих избежать этого, является установка столбца «Guid» в качестве сохраняемого вычисляемого столбца. Таким образом, вы не сможете даже «навязать» другое значение в столбце. Но, поскольку функция NEWID () является недетерминированной, вы не можете определить вычисляемый столбец как сохраненный, и весь подход не работает, так как не задание параметра «Постоянный» приведет к созданию нового Guid при каждом выборе этой строки. *

Тем не менее, я считаю, что у вас есть 2 варианта: придерживаться подхода DEFAULT (newid ()) или работать с триггерами для этого.

0 голосов
/ 09 августа 2017

Пожалуйста, попробуйте использовать следующий запрос:

CREATE TABLE TEST
(
    ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
)
GO
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...