编号是有规则的,如aa+5个数字。
可能有多人并发插入数据,每条数据会有一列生成这个编号,请问大家都如何实现的,一定确保万无一失。

解决方案 »

  1.   

    加的这个数字用一个全局的Cache记录条数,每次插入时,从Cache中获取上次记录的条数,然后将该值加上1,存入cache,等条数到99999时,自动变成0,前面的字母,建议用当前时间,这样绝对可以
      

  2.   

    主键列? 时间+max值一般情况下就可以了  
      

  3.   

    我觉得字母+@@identity这种方法是可行的,但是还有个问题,我如何初始化@@identity,因为在一个事物中它第一次初始化时是null,我想初始化一个大点的数字。
      

  4.   

    建议楼主这样试试:  用表和存储过程来实现。
      方法:(1)、建一个表,专门存放这个编号(可以把其他有这方面业务需求的表都放进来)
         例 table_name   curr_num 
         (2)、写一个存储过程,通过事务,执行curr_num+1,然后返回curr_num
                   并将这个事务放在一个while 下,以便能在事务失败时实现多次执行。
                   
      

  5.   

    写存储过程,带一个output参数(用于字母),里面就直接生成数字就行了,调用的时候直接传一个字母进去组合
      

  6.   

    给你生成序列号的那列数据类型uniqueidentifier默认newid()或者int设置成identity的都可以
      

  7.   


    declare @result char(5)
    if(@@identity is null)
        set @result = '00000'
    else
        set @result = right('00000' + str(@@identity), 5)
      

  8.   

    C#?
        static class MyClass
        {
            static object objLock = new object();
            static int value = 0;
            static  string alph ="ABC......";
            static string GetUniq()
            {
                lock (objLock)
                {
                    digit++;
                    
                    return string.Format("{0}{1}{2:00000}",alph[value/100000/(26*26)], alph[((value/100000) % (26*26))/26 , value % 100000);
                }
            }
        }