思路:
用一个表t来存储保留号码,用一个存储过程来实现用户注册
create procedure sp_1 @id int output
as
...其中的@id就是用来返回新注册的id取用户表中最大id加1,若为保留号码,则再加1直到不是保留号码为止(你的保留号码应该不多),然后插入注册数据,并返回@id

解决方案 »

  1.   

    1.系统初始化时可以设定初始的号码字符位数,比如4,以后号码的增长从4位字符开始,“1000”开始;
    这个应该好处理吧。2.系统应该能够设定某些范围的字符为保留号码,不参加编号,如可以设定"5555","55555"这样的号码不参加编码;
    设一个保留号码表就行了。3.以后申请的号码可以顺序增长,比如超过“9999”后,应该为“10000”;
    如果用SQL的话,建议先建一个顺序增长的全部号码(用一个表保存所有这些号码),在申请时从未选中的号码中随机挑一个号码返回就行了。4。号码全是“数字"字符;
    这个简单了。
      

  2.   

    表一: QQ号码表  (号码,是否被选中,其它字段)
    表二: 保留号码表  (号码,其它字段)选号:
    select top 1 * 号码 from 表一 a
    where 是否被选中='否' and not exists(select 1 from 表二 where 号码=a.号码)
    order by newid()