随机生成不重复的随机编号

在很多情况下都会用到随机数,比如:一个商场购物管理系统,购物蓝是每个用户进入时,建立的,也就是
随机的,当客户购买完以后,结帐,系统要把随机的购物蓝,转变成用户的购物篮,所以在实际情况当中随随机数的获取非常重要,怎么获得一个不会重复的随机数呢?用“阻塞的模式”很简单,
    第一步:根据时间,随机生成一个一个随机数,
    第二步:在表里面查找这个新生成的随机数,如果存在则继续阻塞,
    在这里阻塞,我是用了一个while循环
                         列举个例子:
                                       ALTER PROCEDURE [dbo].[trade_getT_name]

AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

declare @d dateTime
declare @f decimal(20,0)
declare @name nvarchar(8)
declare @i int,@flg tinyint,@t1 int ,@t2 int
set @flg=0

while @flg=0
begin
set @d=getdate()
set @f=DATENAME(mm,@d)+DATENAME(dd,@d)+
DATENAME(hh,@d)+DATENAME(mi,@d)+DATENAME(ss,@d)+DATENAME(ms,@d)
set @name=left(cast(rand()*@f as decimal),8)
set @i=0
set @t1=0
set @t2=0
select @t1=tid from trade where t_name=@name
select @t2=tid from tradeTemp where t_name=@name
set @i=@t1+@t2
if @i=0
 select @name
 return
 set @flg=1
end
END
                  这是个简单的,但也很使用的,不足之处,看官,自适应更改

posted @ 2007-01-22 14:32  上海-天浩  阅读(1274)  评论(0)    收藏  举报

Living in ShangHai

Copyright © 2008 天浩阁 Corporation, All Rights Reserved