生成唯一的随机数

时间:2011-11-21 22:25:42

标签: sql sql-server-2005 sql-server-2008

我试图在INSERT上为“customer”表中的唯一条目生成唯一的“引用代码”。我想用默认值约束来做到这一点。

我的问题是,如何保证随机生成的值将是唯一的?我知道我可以这样做:

 SELECT ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) AS [ReferralCode]

会给我一个随机整数,但我怀疑它不是唯一的。

帮助?

谢谢!

3 个答案:

答案 0 :(得分:3)

这就是uniqueidentifier的用途。但如果int是必需的,那就无法运作。 Int32很小,可以保持相当全球的独特价值。

更新:
如果该值只需要在该表中唯一,则只需创建另一列,启用标识并将种子设置为某个值。

答案 1 :(得分:0)

你可以根据记录的主键(假设为int),加上一些大数字使其看起来随机吗?例如,(CustomerID + 31281923928)。如果您不介意值是连续的,那就是这样。

答案 2 :(得分:0)

也许看一下像nhibernate

这样的strategies

What's the Hi/Lo algorithm?