Автоинкремент уникальный идентификатор - PullRequest
24 голосов
/ 15 мая 2010

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

Ответы [ 4 ]

30 голосов
/ 15 мая 2010

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

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

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

ОБНОВЛЕНИЕ: в 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

Это должно сработать!

6 голосов
/ 15 мая 2010

Полагаю, вы имеете в виду SQLServer, а не C # ...

Установить столбец как ПЕРВИЧНЫЙ КЛЮЧ и ROWGUID

RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png

3 голосов
/ 10 октября 2013

Я думаю

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

проще

3 голосов
/ 15 мая 2010

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

...