求 多用户同时新增记录 保证生成流水号唯一方案

解决方案 »

  1.   

    用一个标识列create table (id int identity(1,1))
    并设置为主键
      

  2.   

    用一存储过程,在保存单据时调用它生成一个按时间+流水号的编号,如:XS200608220001(字+年+月+日+四位流水事)
    create  PROCEDURE XSDBH 
    @BH varchar(14) out
    AS 
    BEGIN    
        SELECT 
            @BH = 'XS'+CONVERT(char(8),getdate(),112) +
                   RIGHT('000'+CAST(ISNULL(MAX(STUFF(编号,1,10,''))+1,1) AS VARCHAR(4)),4)
        FROM 
            XSD --这是销售单表 ,销售单字段"编号"为Varchar(14)
        WHERE 
            substring(编号,3,8) = CONVERT(char(8),getdate(),112)
    END你根据自己情况改用吧