У меня есть таблица sql с столбцом id (guid). как я могу заставить БД автоматически генерировать новый указатель для каждой новой записи?
Как db может автоматически генерировать уникальные идентификаторы?
Ответ 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