随机生成不重复的随机编号
在很多情况下都会用到随机数,比如:一个商场购物管理系统,购物蓝是每个用户进入时,建立的,也就是
随机的,当客户购买完以后,结帐,系统要把随机的购物蓝,转变成用户的购物篮,所以在实际情况当中随随机数的获取非常重要,怎么获得一个不会重复的随机数呢?用“阻塞的模式”很简单,
第一步:根据时间,随机生成一个一个随机数,
第二步:在表里面查找这个新生成的随机数,如果存在则继续阻塞,
在这里阻塞,我是用了一个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
这是个简单的,但也很使用的,不足之处,看官,自适应更改

浙公网安备 33010602011771号