В основном я хочу использовать uniqueidentifier аналогично идентификатору. Я не хочу вставлять в него значения, он должен просто вставлять значения автоматически, различное значение для каждой строки. Я не могу установить автоинкремент на столбцах типа uniqueidentifier (свойство "autoincrement" установлено в false и не редактируется).
Автоинкремент uniqueidentifier
Ответ 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
Это должно сделать трюк!
Ответ 2
Я предполагаю, что вы имеете в виду SQLServer, а не С#...
Задайте столбец как PRIMARY KEY и ROWGUID
RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png
Ответ 3
Использовать значение NewID() в качестве значения по умолчанию. По крайней мере, это то, что вы сделали бы для SQL Server.
Ответ 4
Я думаю,
CREATE TABLE dbo.YourTable
(
SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)
проще