table1:
(no字段为自动编号)
no  num   name   orderNo
-- ----  ------  -------
1   10     a    20031031_10
2   11     b    20031031_11
3   12     c    20031031_12
4   13     d    20031031_13客户端A 和 客户端B同时从数据库中取得字段 num 的最大值, 也就是他们都
得到 num = 13;  然后A和B都把 num := num + 1 后,然后再根据这个num值加上当天的日期来产
生一个销售单号, 也就是他们不论谁先提交,谁后提交都写入了一个相同的
单号20031031_14  !!!怎样才能避免产生重复的销售单???

解决方案 »

  1.   

    我觉得数据库自己有封锁机制,当你取一条数据时,DBMS就会自动将该条记录锁定,所以,我觉得A和B同时访问一条数据时可能会出现问题。
      

  2.   

    这种情况我觉得不能锁啊, 如果两个客户端都要处理数据,  让另一个等不合适吧。我现在的做法是在客户端提交的时候,也就是按"确定“按纽的时候, 客户端再到服务器里再取一次num值,然后根据这个新的num值来产生单号。不过我觉得这种做法在理论上总是有产生重复单号的可能,虽然可能性很小。