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