我已经使用它很长时间了,但我无法找到关于何时不能保证唯一的明确解释。以下是我的评论,如果您认为合适,请更正。
保证值在创建它的机器上是唯一的(已创建)。因此,一台机器上的 .net 应用程序生成的 GUID 永远不会与同一台机器上的 SQL Server 创建的 GUID 冲突。
在所有其他情况下,我们无法保证。从理论上讲,如果不同计算机上的数据库中的唯一标识符字段有多个创建源(例如不同计算机上的应用程序),则总是有可能插入重复项。
编辑:抱歉没有正确形成问题。我想我想知道在同一台机器上与不同机器上生成冲突的概率,如果使用 c#'s Guid.NewGuid()
, SQL Server's newid()
,newsequentialid()
函数或不同应用程序的任何其他函数。“已经回答”链接有一个回复,其中说他实际上遇到了发生这种情况的案例。让你想知道这种情况发生的频率有多高。
如果我有一个带有 uniqueidentifier 字段作为 pk 的表,我是否应该担心每次通过不同的应用程序或 SQL Server 的函数创建一个新值来进行插入时检查唯一性?