要写一个网络版软件,可能有几个客户机同时操作一种单据,有什么方法可以避免冲突?单号唯一性怎么处理?

解决方案 »

  1.   

    单据号在事务中取得。例如:(SQL Server数据库)
    Begin Transaction
    declare @MaxNo
    select @MaxNo=Max(No) from Table
    insert into table(No,....)
    values(@MaxNo,....)
    ......if @@error=0 Commit Transaction else Rollback Transaction
      

  2.   

    要做好,看来只能充分发挥DBMS的数据并发操作方面的优势,约束、或自己使用共享锁之类
      

  3.   

    同意julychina(猴子哥)的做法,我們公司也是這樣處理的!