My SQL Server 2012 表具有以下列定义:
[GlobalId] UNIQUEIDENTIFIER DEFAULT (newid()) NULL,
将其定义为 UNIQUEIDENTIFIER 有什么好处吗?或者我可以直接定义它吗? 作为字符串。我问的原因是因为稍后我可能不想存储完整的 GUID 的值,我可能想生成自己的 ID。
现在它存储为 UNIQUEIDENTIFIER 我可以将定义更改为字符串吗 并且仍然有默认工作?
以下是我在 GlobalId 列中存储的内容的示例:
6ffcac5e-88f1-4207-bbbe-0fc14265c01f
最佳答案
正如 valex 提供的链接中所述,
A GUID is a unique binary number; no other computer in the world will generate a duplicate of that GUID value. The main use for a GUID is for assigning an identifier that must be unique in a network that has many computers at many sites.
所以有趣的是这个著名的独特事实。
如果你想要字符串值,就使用字符串值,但是sql server中允许生成新值的内置函数是NEWID和NEWSEQUENTIALID,它们给出了UNIQUEIDENTIFIER。
您没有义务对标识列使用 UNIQUEIDENTIFIER,这取决于您的数据模型和服务器:如果只有一个数据库服务器生成 key ,则序列 ID 就可以了,并且效率更高(而且很多)比 GUID 更容易阅读)。如果多个服务器生成 key ,则使用 GUID
关于sql-server - 在 SQL Server 2012 中将 newid() 存储在数据类型为 UNIQUEIDENTIFIER 的列中有何优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20785947/