WEB开发网
开发学院数据库MSSQL Server 使用uniqueidentifier还是IDENTITY生成主键? 阅读

使用uniqueidentifier还是IDENTITY生成主键?

 2008-10-28 10:09:24 来源:WEB开发网   
核心提示: 自动生成主键值的另一种方法是把你的字段指定为唯一标识符的类型和使用NEWID() 或者NEWSEQUENTIALID()函数的DEFAULT约束,不像IDENTITY,使用uniqueidentifier还是IDENTITY生成主键?(2),DEFAULT约束必须用来把一个全球唯一标识符分

使用uniqueidentifier还是IDENTITY生成主键?

自动生成主键值的另一种方法是把你的字段指定为唯一标识符的类型和使用NEWID() 或者NEWSEQUENTIALID()函数的DEFAULT约束。不像IDENTITY,DEFAULT约束必须用来把一个全球唯一标识符分配给这个字段。

NEWID()和NEWSEQUENTIALID()有什么区别呢? NEWID()随机生成一个基于服务器网卡的标识符号码和CPU块唯一号码的保证的唯一值。与此相反,NEWSEQUENTIALID()按照顺序生成这些值而不是随机生成。

让我们使用带有NEWID()和NEWSEQUENTIALID()唯一标识符来创建新表:

  USEMSSQLTIPS
  GO
  CREATETABLENEWID_TEST
  (
  IDUNIQUEIDENTIFIERDEFAULTNEWID()PRIMARYKEY,
  TESTCOLUMNCHAR(2000)DEFAULTREPLICATE('X',2000)
  )
  GO
  CREATETABLENEWSEQUENTIALID_TEST
  (
  IDUNIQUEIDENTIFIERDEFAULTNEWSEQUENTIALID()PRIMARYKEY,
  TESTCOLUMNCHAR(2000)DEFAULTREPLICATE('X',2000)
  )
  GO
  --INSERT1000ROWSINTOEACHTESTTABLE
  DECLARE@COUNTERINT
  SET@COUNTER=1
  WHILE(@COUNTER<=1000)
  BEGIN
  INSERTINTONEWID_TESTDEFAULTVALUES
  INSERTINTONEWSEQUENTIALID_TESTDEFAULTVALUES
  SET@COUNTER=@COUNTER+1
  END
  GO
  SELECTTOP3IDFROMNEWID_TEST
  SELECTTOP3IDFROMNEWSEQUENTIALID_TEST
  GO

上一页  1 2 3 4  下一页

Tags:使用 uniqueidentifier 还是

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接