Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 生成唯一的随机数_Sql_Sql Server 2005_Sql Server 2008 - Fatal编程技术网

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()吗?