日期:2014-05-18  浏览次数:20451 次

*******刚结贴一问题,又来问一问题,如何这样?分好多的
1,我想随机自动生成一个用户id,6-9位的数字,相当于用户名
2, 以后生成的id不能和上次重复,我想可能有2种情况都可以,一种再插入之前判断,如果相同,则重新再生成,一种是每次都不一样,我不知道该怎么做?大家给个办法,谢谢!分多多的给!

------解决方案--------------------
用随机数啊,重复几率很小的
------解决方案--------------------
如果存在数据库里
可以用
if exists(select * from user_table where username = "新的用户名判断
")
------解决方案--------------------
070814+3位随机数,这样的数字肯定不会重复的;
前面的日期通过服务器时间产生;
------解决方案--------------------
用自增量。每次增加1。没有重复的!

------解决方案--------------------
以 DateTime.Now.Ticks 为种子生成随机数
------解决方案--------------------
学习哈

------解决方案--------------------
添加的时候每次还都要判断,个人觉得有点浪费资源了吧,这样的话请求等待的时间是不是长了阿。楼主考虑过“全球唯一码”吗? 
这个是绝对不可能重复的,在添加的时候就不用去检查了。
个人观点,我一直这么认为的(也许更消耗资源也说不定),希望大家指出问题!谢谢!
------解决方案--------------------
newid 不能滿足lz的要求 (6-9位的数字)
------解决方案--------------------
既然不太可能重复,判断一下也不用多久吧......

个人感觉安全第一,多那么一下判断是必要的.万一重复了就麻烦了.
------解决方案--------------------
问题是你怎么保存以前增加的?

得设计用户表结构,增加自增ID字段
------解决方案--------------------
我写过类似的程序,用了一个循环判断的.这样就不可能重复了.

如果重复,一直生成新的随机数,直到出现没有重复为止.
------解决方案--------------------
随机估计没什么问题的..
但用户id用来生成,没多大必要吧,你不如用自动增长列...
------解决方案--------------------
既然是数字,为什么不考虑采用该字段自动增长列呢?

------解决方案--------------------
不想重复
1 记录已经有的号 然后比较 显然这个方法效率上存在很大问题

2 根据时间 年月日十分秒产生数字 才是理想的不重复
------解决方案--------------------
用日期加自动增长的几位数生成ID
------解决方案--------------------
年月日时分秒+毫秒
------解决方案--------------------
1、根据时间
2、newid()
3、自增序列
看着用呗
------解决方案--------------------
严重同意BearRui(AK-47)采用“用日期加自动增长的几位数生成ID”的方法
------解决方案--------------------
插入前先判断一下。要不了多长时间。
------解决方案--------------------
还是判断一下的好.
------解决方案--------------------
用数据库判断保证100%不重复,还是有几率发生重复的,建议使用数据库
------解决方案--------------------
wxlwxlwxlwxl(好) ( ) 信誉:100
1、根据时间
2、newid()
3、自增序列


--------------------

同意
------解决方案--------------------
up
------解决方案--------------------
hao
------解决方案--------------------
我写过类似的程序,用了一个循环判断的.这样就不可能重复了.

如果重复,一直生成新的随机数,直到出现没有重复为止.
=====================================================
很不负责任的程序员,你们数据量到一定多的时候要累死服务器的!