我的SQL Server 2012表具有以下列定义:
[GlobalId] UNIQUEIDENTIFIER DEFAULT (newid()) NULL,
这被定义为UNIQUEIDENTIFIER是否有任何优势,或者我可以定义它 作为一个字符串。我问的原因是因为以后我可能不想存满 GUID的值,我可能想生成自己的Id。
现在它存储为UNIQUEIDENTIFIER,我可以将定义更改为字符串 还有DEFAULT吗?
以下是我在GlobalId列中存储的示例:
6ffcac5e-88f1-4207-bbbe-0fc14265c01f
答案 0 :(得分:3)
如valex提供的链接中所述,
GUID是唯一的二进制数;世界上没有其他计算机会 生成该GUID值的副本。 GUID的主要用途是 用于分配在具有的网络中必须唯一的标识符 许多站点都有许多计算机。
所以兴趣就是这个着名的独特事实。
如果你想要字符串值,请使用字符串值,但sql server中允许生成新值的内置函数是NEWID和NEWSEQUENTIALID,它提供了UNIQUEIDENTIFIER。
您没有义务将UNIQUEIDENTIFIER用于标识列,它将取决于您的数据模型和服务器:如果只有一个数据库服务器生成密钥,则序列ID很好,并且更有效(并且很多)比GUID更容易阅读。如果多个服务器生成密钥,则使用GUID
答案 1 :(得分:1)
我不确定你问的问题。但似乎是如何将uniqueidentifer转换为字符串。 将uniqueidenitifier转换为字符串 convert(char(36),newid())将返回一个字符串。