Подтвердить что ты не робот

Автоинкремент uniqueidentifier

В основном я хочу использовать uniqueidentifier аналогично идентификатору. Я не хочу вставлять в него значения, он должен просто вставлять значения автоматически, различное значение для каждой строки. Я не могу установить автоинкремент на столбцах типа uniqueidentifier (свойство "autoincrement" установлено в false и не редактируется).

4b9b3361

Ответ 1

Или даже лучше: используйте newsequentialid() как значение по умолчанию для столбца UNIQUEIDENITIFER. Это даст вам несколько последовательных рядов GUID.

CREATE TABLE dbo.YourTable   
   (SerialID UNIQUEIDENTIFIER 
        CONSTRAINT DF_SerialID DEFAULT newsequentialid(),
     .... (other columns)......
   )

Проблема: newsequentialid доступен только в качестве столбца по умолчанию - вы не можете назвать его как функцию или что-то еще. Но это, похоже, соответствует вашим требованиям.

ОБНОВЛЕНИЕ: в SQL Server Management Studio обнаружена ошибка, которая предотвращает указание newsequentialid() по умолчанию для столбца в конструкторе интерактивных таблиц.

Смотрите: http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/cad8a4d7-714f-44a2-adb0-569655ac66e6

Временное решение: создайте таблицу без указания значения по умолчанию, а затем введите этот оператор T-SQL в обычном окне запроса и запустите его:

ALTER TABLE dbo.YourTable
    ADD CONSTRAINT DF_SerialID DEFAULT newsequentialid() FOR SerialID

Это должно сделать трюк!

Ответ 3

Использовать значение NewID() в качестве значения по умолчанию. По крайней мере, это то, что вы сделали бы для SQL Server.

Ответ 4

Я думаю,

CREATE TABLE dbo.YourTable
(
    SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)

проще