如何在每个记录中创建唯一的哈希字节值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在每个记录中创建唯一的哈希字节值相关的知识,希望对你有一定的参考价值。

CREATE TABLE [dbo].[test]
(
    [GroupID] [NVARCHAR](255) NULL,
    [PromoNUM] [FLOAT] NULL,
    [P_key] AS (HASHBYTES('md5', 'Sample String to hash ')) PERSISTED
) ON [PRIMARY]

p_key值在表中的每个记录中必须是唯一的

答案

如果要在每个记录中使用唯一值,请使用identity

CREATE TABLE [dbo].[test] (
    TestId IDENTITY(1, 1) NOT NULL PRIMARY KEY,
    [GroupID] [NVARCHAR](255) NULL,
    [PromoNUM] [FLOAT] NULL
) ON [PRIMARY]

您不能保证哈希值是唯一的。您可以安排事物,因此发生碰撞的可能性非常低。但是对于唯一性来说,这可能还不够好。

因此,只需使用IDENTITY的标准方法。或者,如果您想要一个不连续的值,请使用NEWID()(但是,我建议不要将其用于聚集索引)。

另一答案

虽然我同意戈登的回答,但以下是您可能想尝试的方法。

[P_key] varbinary(8000) default CRYPT_GEN_RANDOM(8000)

考虑默认随机值(NEWID()CRYPT_GEN_RANDOM()RAND())对于聚集索引/主键不是一个好主意,因为它们是潜在的碎片原因。而是将BIGINT数据类型与IDENTITY一起使用,或者(如果确实需要)将UNIQUEIDENTIFIER数据类型与默认值设为NEWSEQUENTIALID ()

以上是关于如何在每个记录中创建唯一的哈希字节值的主要内容,如果未能解决你的问题,请参考以下文章

如何将数组附加为哈希值

在哈希表中创建字符串的哈希值的时间复杂度

如何在Mason代码中创建字符串的SHA-256哈希?

当组值不是唯一标识时如何在熊猫中创建堆积条

如何展平哈希,使每个键成为唯一值?

如何在片段中创建选项卡的示例?