Как db может автоматически генерировать уникальные идентификаторы?

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

CREATE TABLE TEST
(
    ID UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID() PRIMARY KEY,
    TESTCOLUMN CHAR(2000) DEFAULT REPLICATE('X',2000)
)
GO