随机生产10位数字作为用户唯一ID,如果确保不重复?

zhiye2005 2008-09-27 12:28:54
dim user_id,total,f_all,f_Rand_a,f_Randomizecode,f_iR
Function GetRamCode(f_number)
Randomize
f_all="1|2|3|4|5|6|7|8|9" '共9个
f_Rand_a=split(f_all,"|")
for f_iR=1 to f_number
f_Randomizecode=f_Randomizecode&f_Rand_a(Int((9*Rnd)))
next
user_id=f_Randomizecode
'response.Write (info_url)

do
set rs3=server.createobject("adodb.recordset")
rs3.open "select count(*) as total from date_user where user_id='"&user_id&"'",MM_con_user_STRING,1,3

if rs3("total")=0 then '说明数据库里没有,可以添加 然后退出 do
user_id=user_id
exit do
rs3.close
set rs3=nothing
end if
call GetRamCode(10)'重新生产10位数
loop while true
End Function

call GetRamCode(10)

这是我编的,但是有问题啊 ,效率低啊!
请高手看下,希望不要用那种 日期加时间 生产用户唯一ID 还有这种md5(yymmdd)也不太好
...全文
695 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingdongfang 2008-09-29
  • 打赏
  • 举报
回复
GUID
lufuko 2008-09-29
  • 打赏
  • 举报
回复
同意用时间+随机
半山闲人 2008-09-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 smartcatiboy 的回复:]
access支持两种ID
自动编号和同步复制Id(uuid)
都可以满足楼主需要,为什么要自己写呢????
[/Quote]
这个同步复制ID是什么东东,能解释下么?
eagle_2008 2008-09-27
  • 打赏
  • 举报
回复
dd
Lee2K 2008-09-27
  • 打赏
  • 举报
回复
同意前几楼的,如果要在短时间内的判断的话.可以调用session或者Application进行,但是是全局类的话,还是调用数据库来储存比较好.
smartcatiboy 2008-09-27
  • 打赏
  • 举报
回复
access支持两种ID
自动编号和同步复制Id(uuid)
都可以满足楼主需要,为什么要自己写呢????
tubin 2008-09-27
  • 打赏
  • 举报
回复
同意用时间+随机
13617650029 2008-09-27
  • 打赏
  • 举报
回复
如果怕时间重复,就时间加用户ID,不过时间你要采用带有0的,比如2008年1月2日9点21分6秒,你要采用20080102092106+用户id
johnnyeven 2008-09-27
  • 打赏
  • 举报
回复
同意用时间

或者再保险点 时间+随机数
sun_zhicheng 2008-09-27
  • 打赏
  • 举报
回复
只有用时间了,只有这种情况下不会有重复的...
chm_y 2008-09-27
  • 打赏
  • 举报
回复
要唯一还是用时间吧,这样不会重复!
tjficcbw 2008-09-27
  • 打赏
  • 举报
回复
就是判断那,没别的方法
每产生一个要与前面的对比,没有则,建立 ,有则再产生一个
判断方法为,sql="select id from db where id =" & id值
13617650029 2008-09-27
  • 打赏
  • 举报
回复
如果采用随机,就肯定会有重复,还是老老实实用时间吧

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧