系统设计是这样的,在新插入一条数据的时候 先查找数据库中某一字段的数值,在此基础上+1,如:当插入的时候查到数据库某一字段的数值是333001,那么插入的这条数据此字段的数值就是333002,但是此会造成一个问题,当两个用户同时插入的时候 就可能会产生2条333002。如何解决这个问题。
备注:不能使用自增长。不使用随机数,随机数会导致数值无规律。

解决方案 »

  1.   

    插入数据的时候先生成一个自加一的ID,再通过ID分配你要的流水账号
      

  2.   

    SQL Server为我们提供了UniqueIdentifier数据类型,并提供了一个生成函数NEWID( ),使用NEWID( )可以生成一个唯一的UniqueIdentifier。UniqueIdentifier在数据库中占用16个字节,出现重复的概率非常小,以至于可以认为是0。我们经常从注册表中看到类似{45F0EB02-0727-4F2E-AAB5-E8AEDEE0CEC5}的东西实际上就是一个UniqueIdentifier,Windows用它来做COM组件以及接口的标识,防止出现重复。在.NET里管UniqueIdentifier称之为GUID(Global Unique Identifier)。在C#中可以使用如下命令生成一个GUID:
    Guid u = System.Guid.NewGuid();
      

  3.   

    每次插入前lock住表,先检查id是否已经存在,如果存在,+1,如果还存在,继续+1直到不存在
    插入完成以后释放锁。这个用存储过程很容易实现。
    这样可确保唯一性,但是锁表的时候,如果插入动作很频繁,可能会导致性能上的一些损失。
      

  4.   

    在数据库的字段上加上UNIQUE 如果执行失败 让他再加1