我的单据分三种(A、B、C),格式如下:A-00000001、A-00000002....B-00000001、B-00000002....C-00000001、C-00000002....编号都是按客户端请求先后递增的,1、如何避免几个客户端同时请求同类编号时不会出现重复编号?2、数据库重启后如何保证编号的顺延?有现成代码的请帖一下,无现成代码的请指点一下,谢谢了!

解决方案 »

  1.   

    CREATE PROCEDURE   usp_cm_maxid    @type char(30)  AS  
            if @type=A
             begin
    select   max(id)  
    from  h_code_goods
    where @type=A 
             end
    ......GO
      

  2.   

    sxdoujg() :你的方法好象不行哦,我的意思是这个存储过程要维护这些编号,如果一个客户端申请了编号A-00000005,既使是没有进行数据的存储,其它客户端申请时编号时也要越过第一个客户端申请的编号成为A-00000006
      

  3.   

    vicky_1981() :你说的办法我想过,但不知道多用户并发时会不会出现某几个用户得到的是相同编号?
      

  4.   

    sxdoujg() :不过:没有同时 提交数据的,总会有时间差的(即不会发生冲突)!我觉得有可能,因为存储过程中的主要两条语句1、提取数据库中存储的最大编号,2、编号+1后存储到数据库里。这两步之中是有时间差的,虽然很小,但绝对有可能出现两个人最终编号一制。