我可以在Guid中存储额外的数据吗

本文关键字:数据 存储 Guid 我可以 | 更新日期: 2023-09-27 17:57:54

我们可以用字符串值在C#中实现一个自定义GUID,然后从GUID解析中再次获取自定义字符串数据吗?这听起来可能不实际,但只是为了了解这个过程及其优点。

假设我们有一个数据库表CUSTOMER,其中Cust_Data列是唯一标识符数据类型。在C#中,我们创建了生成GUID的方法,并将其放入DB表中。例如

public Guid GetCustomGuid(Guid guidValue , string customerData)
{
 // Method implementation
 // Create New GUID as ==> guidValue + customerData;
 return //Guid created
}

生成GUID后,我们再次从DB解析GUID并获取客户数据。

public string GetCustomData(Guid GuidFromDB)
{
  // Method implementation for parsing the guid.
  // fetch the custom data from GuidFromDB.
  // Every GUID received is always unique with respect to customer  data.
  return //CustomerData;
 }

我不知道是否,我把问题放在了确切的上下文中,如果需要,请编辑它。

我可以在Guid中存储额外的数据吗

类型为uniqueidentifier的列可以存储16个字节。这通常不足以为额外数据留出空间,而且当然无论如何都不适合确保在开始从Guid中删除字节以腾出空间后列仍然是唯一的。当你这样做时,guid中不再有GU,它不再保证是全局唯一的。你得到的随机索引碰撞当然非常令人不快。

没有意义,只需在表中添加一列即可。也许你想要一个聚集索引,这个问题还不清楚。

不这样做的最大原因之一是,如果GUID与某些客户数据相关,并且您更改了该数据,则更改了GUID。这将破坏数据库中的引用完整性。行标识本身不支持包含关于行的数据,只支持包含该行与其他行的关系。