Поля типа 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()
)
это проще