首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一标识符在数据库中是唯一的吗?

统一标识符在数据库中是唯一的吗?
EN

Stack Overflow用户
提问于 2015-02-09 07:42:35
回答 2查看 2.5K关注 0票数 2

我有许多数据库,每个数据库都有一个审计表。其中一个数据库是“公共”数据库,其中有国家、州等表。

此通用数据库的表在其他数据库中作为视图引用。

目前,我的审计表有一个标识列。对于列出审计记录,我使用UNION合并普通数据库中的审计表和公共数据库中的审计表。

但是,审计表中的标识列可能是相同的。

如果我在审计表中添加了一个unique标识符列,并使用它作为我的唯一id,那么该列在数据库中是否是唯一的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-09 07:44:37

如果您使用内置的uniqueidentifier生成方法(比如newId()或C#的Guid.NewGuid()),是的,它在数据库、服务器、国家和其他任何地方都是独一无二的。

事实上,这是GUIDs复制的主要用途之一。如果您在两个数据库中具有相同的GUID,则可以保证它是故意放在那里的。

但是,请注意GUID确实有它们的缺点--它们可能会使您的索引执行得更糟(或者至少需要更多的维护),而且它们一般都更大。

而且,GUID并不是完全随机的--有几种不同的GUID生成算法,其中一些算法本质上是唯一的(例如,使用MAC地址作为GUID的一部分-默认情况下,MAC是唯一的,尽管您可以手动覆盖它们)--因此每个物理服务器中有一个部分是唯一的,机器确保它不会对两个GUID使用相同的时间戳。还有顺序GUID (newSequentialId()),它可以方便地避免索引碎片(当然,对于聚集索引非常有用)--请注意,这些依赖于计算机的MAC地址,而且它们是可预测的,所以如果您要公开GUID,并且您认为它们是“机密”的,那么您可能不想使用它们。有些GUID算法比其他算法更可预测。

票数 4
EN

Stack Overflow用户

发布于 2015-02-09 07:45:51

它是普遍独特的。它是由32个字符随机生成的字符串,使得复制成为1/ (16^ 32 )的可能性。

没有一定的机制来创造唯一性,极低的概率可以做到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28404964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档