sql-server - 在 SQL Server 2012 中将 newid() 存储在数据类型为 UNIQUEIDENTIFIER 的列中有何优点?

标签 sql-server

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/

相关文章:

sql-server - 服务器关闭时如何处理 SQL Server 代理作业

sql-server - 有没有办法将 "export"整个 SQL Server 数据库(架构和数据)转换为文本?

sql-server - SQL - 从excel文件中选择的数据

sql - 从位掩码确定一周中的几天

sql-server - Sql Server 中的多行到一个逗号分隔值

sql-server - 使用在基于集合的插入期间创建的 ID 更新现有临时表

sql-server - 导出到 Excel 文件时,如何删除 SSIS 插入的列标题行?

sql-server - 删除并重新创建所有约束结合 sp_MSForEachTable sql server

sql-server - 从 SQL Server(通过 LinkedServer)选择 Sybase 表得到错误 "db.schema.table was reported to have a "DBCOLUMNFLAGS_ISFIXEDLENGTH"of 16

c# - EF 代码优先 : Add row to table with a non-identity primary key