基本上我想以与身份相似的方式使用uniqueidentifier。我不想在其中插入值,它应该只是自动插入值,每行都有不同的值。 我无法在uniqueidentifier类型的列上设置自动增量(属性'autoincrement'设置为false且不可编辑)。
答案 0 :(得分:30)
甚至更好:使用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
这应该可以做到!
答案 1 :(得分:6)
我猜你的意思是在SQLServer而不是C#...
将列设置为PRIMARY KEY和ROWGUID
RowGuid http://img341.imageshack.us/img341/8867/sqlserverrowguid.png
答案 2 :(得分:3)
使用NewID()作为默认值。至少这是你为SQL Server做的。
答案 3 :(得分:3)
我认为
CREATE TABLE dbo.YourTable
(
SerialID UNIQUEIDENTIFIER PRIMARY KEY DEFAULT newsequentialid()
)
更简单