table1:no  num   name
-- ----  ------
1   10     a
2   11     b
3   12     c
4   13     d客户端A 和 客户端B同时从数据库中取得字段 num 的最大值, 也就是他们都
得到 num = 13;然后A和B都把 num := num + 1 后,然后再写入(Insert)一条新数据进去。 可
是这个时候他们写入了num = 14.   实际是需要 A.num = 14;  b.num = 15 
(假设A先提交,B后提交)
大家是怎样保证A,和B写入数据库的num 值不是同一个值??

解决方案 »

  1.   

    sqlserver应该可以处理这些情况的吧!
    或者这个事件用事务来处理 在一个事务没有提交的时候 另一个客户端的时候是不可以开始的
      

  2.   

    用一条SQL语句让数据库自己处理:insert into table1(num) values((select max(num) from table1))其他字段的控制根据需要自己加上去吧。
      

  3.   

    用SQL语句来更新数据库
    ‘update table set num = num + 1’
    在更新的时候数据库会自动加锁,更新完成后自动解锁,虽然AB读的数相同,但是提交时只会在某个时间接受某个事务