Autoincrement uniqueidentifier

时间:2010-05-14 20:54:03

标签: sql-server database uniqueidentifier auto-increment

基本上我想以与身份相似的方式使用uniqueidentifier。我不想在其中插入值,它应该只是自动插入值,每行都有不同的值。 我无法在uniqueidentifier类型的列上设置自动增量(属性'autoincrement'设置为false且不可编辑)。

4 个答案:

答案 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()
)

更简单