在SQL Server 2012中使用数据类型为UNIQUEIDENTIFIER的列中存储newid()的优点是什么?

时间:2013-12-26 13:46:17

标签: sql-server

我的SQL Server 2012表具有以下列定义:

[GlobalId]         UNIQUEIDENTIFIER DEFAULT (newid()) NULL,

这被定义为UNIQUEIDENTIFIER是否有任何优势,或者我可以定义它 作为一个字符串。我问的原因是因为以后我可能不想存满 GUID的值,我可能想生成自己的Id。

现在它存储为UNIQUEIDENTIFIER,我可以将定义更改为字符串 还有DEFAULT吗?

以下是我在GlobalId列中存储的示例:

6ffcac5e-88f1-4207-bbbe-0fc14265c01f

2 个答案:

答案 0 :(得分:3)

如valex提供的链接中所述,

  

GUID是唯一的二进制数;世界上没有其他计算机会   生成该GUID值的副本。 GUID的主要用途是   用于分配在具有的网络中必须唯一的标识符   许多站点都有许多计算机。

所以兴趣就是这个着名的独特事实。

如果你想要字符串值,请使用字符串值,但sql server中允许生成新值的内置函数是NEWID和NEWSEQUENTIALID,它提供了UNIQUEIDENTIFIER。

您没有义务将UNIQUEIDENTIFIER用于标识列,它将取决于您的数据模型和服务器:如果只有一个数据库服务器生成密钥,则序列ID很好,并且更有效(并且很多)比GUID更容易阅读。如果多个服务器生成密钥,则使用GUID

答案 1 :(得分:1)

我不确定你问的问题。但似乎是如何将uniqueidentifer转换为字符串。  将uniqueidenitifier转换为字符串 convert(char(36),newid())将返回一个字符串。