Поля типа uniqueidentifier

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

4 ответов


или даже лучше: используйте 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

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


Я думаю, вы имеете в виду SQLServer, а не C#...

установите столбец в качестве первичного ключа и ROWGUID

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


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


Я думаю

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

это проще