Autoincrement uniqueidentifier

Ras*_*sto 24 database sql-server uniqueidentifier auto-increment

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

mar*_*c_s 30

甚至更好:使用newsequentialid()UNIQUEIDENITIFER列的默认值.这将为您提供一系列连续的GUID.

CREATE TABLE dbo.YourTable   
   (SerialID UNIQUEIDENTIFIER 
        CONSTRAINT DF_SerialID DEFAULT newsequentialid(),
     .... (other columns)......
   )
Run Code Online (Sandbox Code Playgroud)

问题是: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
Run Code Online (Sandbox Code Playgroud)

这应该够了吧!


Bru*_*oLM 6

我想你的意思是在SQLServer而不是C#...

将列设置为PRIMARY KEY和ROWGUID

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

  • 只是确保**不**使用它成为桌子上的聚集索引! (2认同)
  • GUID 作为聚集索引非常糟糕:查看 http://www.sqlskills.com/BLOGS/KIMBERLY/post/GUIDs-as-PRIMARY-KEYs-andor-the-clustering-key.aspx - 它们导致大量页面和索引碎片 (2认同)