这个SQL如何避免重复出现ID?SOS,数据库全乱了套了!~数据库中本来全是用软件自带的表单填写数据,因为不太适合公司的要求,进行了二次开发,可是不知道是SQL的写法有问题还是那儿不对,在增加的时候会出现重复的ID,请各位路过的大侠看看!烦死了呀!下面的表达式是用事件探查器侦察到的语句:
...
update tblmaxNum set fmaxnum=fmaxnum+1 where ftablename='icNoticebill'
...意思是当增加一张单据时,在tblmaxNum中将ftablename='icNoticebill'自动加1,,我看到后也在二次开发的地方做了如下的表达式:
增加单据的时候是这样的:
 Call mylink
    sql1 = "select fmaxnum as billNOmax from tblmaxNum where ftablename='ICStockBill'"
     RST.Open sql1, CNN, adOpenKeyset, adLockOptimistic
     ff = RST.Fields("billNOmax")<-------------这个就是ID
Sub nomax()
  Call mylink
    SQL = "update tblmaxNum set fmaxnum=fmaxnum+1 where ftablename='ICStockBill'"
    CNN.Execute SQL
  Set RST = Nothing: CNN.Close
End Sub
可是在网络版用的时候就会出现重复的ID(是由fmaxnum的数值决定),看看我得的这句话应该如何写?

解决方案 »

  1.   

    设计表--在ID字段上--索引/键-->创建unique,然后在程序中加个错误捕捉,当出现重复ID时数据库会给出错误提示
      

  2.   

    不是自动编号列,是通过finterid加1的效果来达到ID编码的,当网络上的用户比较多时就会出现ID重复,我感觉是在上面的那一句话有点问题,没有查错功能!
      

  3.   

    当A用户读了ID,还没有将ID+1写进去时,B用户读了ID,并且将ID+1写入数据库,然后,A用户也将ID+1写入数据库了.你的问题应该就这样出现的.听说用存储过程可以避免这个
      

  4.   

    多用户环境要在保存的时候申请 ID,并且用事务:
    BeginTrans
    申请 ID
    执行 Insert
    CommitTrans