Sql 生成唯一的随机数
我试图在插入时为“客户”表中的唯一条目生成唯一的“推荐代码”。我希望使用默认值约束来执行此操作 我的问题是,我如何保证随机生成的值是唯一的?我知道我可以做一些事情,比如:Sql 生成唯一的随机数,sql,sql-server-2005,sql-server-2008,Sql,Sql Server 2005,Sql Server 2008,我试图在插入时为“客户”表中的唯一条目生成唯一的“推荐代码”。我希望使用默认值约束来执行此操作 我的问题是,我如何保证随机生成的值是唯一的?我知道我可以做一些事情,比如: SELECT ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) AS [ReferralCode] 将给我一个随机整数,但我怀疑它不是唯一的 帮忙 谢谢 这就是它的用途。但是如果int是一项要求,那么这就行不通了Int32太小,无法容纳相当全局唯一的值 更新: 如果该值在该表中只需要
SELECT ABS(CAST(CAST(NEWID() AS VARBINARY) AS INT)) AS [ReferralCode]
将给我一个随机整数,但我怀疑它不是唯一的
帮忙
谢谢 这就是它的用途。但是如果int
是一项要求,那么这就行不通了Int32
太小,无法容纳相当全局唯一的值
更新:如果该值在该表中只需要是唯一的,只需创建另一列,启用标识并将种子设置为某个值。这就是它的用途。但是如果
int
是一项要求,那么这就行不通了Int32
太小,无法容纳相当全局唯一的值
更新:如果该值在该表中只需要是唯一的,只需创建另一列,启用identity并将种子设置为某个值。能否将其基于记录的主键(假定为int),再加上一些大的数字以使其看起来随机?例如,(CustomerID+31281923928)。这是如果你不介意这些值是连续的 你能根据记录的主键(假设int)加上一些大的数字使其看起来随机吗?例如,(CustomerID+31281923928)。这是如果你不介意这些值是连续的 也许可以看看nhibernate之类的产品中的一些
也许可以看看nhibernate之类的产品中的一些
您真的需要随机ID吗?或者伪随机就足够了?伪随机可能有效?你真的需要随机ID吗?或者伪随机就足够了?伪随机可能有效?我想这取决于op中“唯一”的含义。如果它只需要在该表中是唯一的值,就可以使用pk列。但这当然不是一个全球唯一的值。是的,它只需要在这个表中是唯一的。我想避免使用主键列。我想这取决于op中“唯一”的含义。如果它只需要在该表中是唯一的值,就可以使用pk列。但这当然不是一个全球唯一的值。是的,它只需要在这个表中是唯一的。我想避免使用主键列。我想我能做的是将ReferralCode列设置为uniqueidentifier数据类型。然后,在其外部编写一个非常简单的函数,将其转换为整数。这总是会产生唯一的整数,还是我弄错了?@RayBao另一种选择是将随机引用编号保存在列中,当生成新的时,检查以确保它尚未生成,在这种情况下,生成新的
SELECT CAST(RAND()*1000000为INT)
在与其他几位同事交谈后,我们似乎并没有被设置为仅限整数。也就是说,我可以不使用“uniqueidentifier”列并将默认值设置为newid()?我想我可以做的是将ReferralCode列设置为uniqueidentifier数据类型。然后,在其外部编写一个非常简单的函数,将其转换为整数。这总是会产生唯一的整数,还是我弄错了?@RayBao另一种选择是将随机引用编号保存在列中,当生成新的时,检查以确保它尚未生成,在这种情况下,生成新的SELECT CAST(RAND()*1000000为INT)
在与其他几位同事交谈后,我们似乎并没有被设置为仅限整数。这么说来,我可以使用“uniqueidentifier”列并将默认值设置为newid()吗?