它是每次用户申请帐号的时候,随机生成一个不存在的号码呢?还是最大值 + 1?
不使用自动编号有哪些好处?如何保证多人同时更新的时候不会因为最大值 + 1已经存在而插入失败?
有什么方法可以快速返回一个 1 至 最大值 之间不存在的号?
如果插入记录时因为ID已经存在,会返回什么错误号?可否从新分配一个ID值反复插入,直至成功?有什么简单而有完美的方法?

解决方案 »

  1.   

    它是每次用户申请帐号的时候,随机生成一个不存在的号码呢?还是最大值   +   1? 
    ---
    它有规则 的不使用自动编号有哪些好处?如何保证多人同时更新的时候不会因为最大值   +   1已经存在而插入失败?
    --
    自编号系统自己生成,保证不重复
     
    有什么方法可以快速返回一个   1   至   最大值   之间不存在的号? 
    ---
    declare @t table(id int)
    insert into @t select 1
    insert into @t select 2
    insert into @t select 4
    insert into @t select 6
    insert into @t select 7
    select min(id+1) from @t a where not exists(select 1 from @t where id=a.id+1)如果插入记录时因为ID已经存在,会返回什么错误号?可否从新分配一个ID值反复插入,直至成功?有什么简单而有完美的方法?--
    失败,直接报错返回
      

  2.   

    如果插入记录时因为ID已经存在,会返回什么错误号?可否从新分配一个ID值反复插入,直至成功?有什么简单而有完美的方法?
    ----
    貌似,自动编号最完美要把重号概率缩小到最小?
    也许使用:种类号+服务器时间(yyyymmddhhnnss)+.....
    和身份证的编码规则类似的方法