我们在开发多用户系统一定出现这样的情况:
你要求一张表的主键是唯一的连续的,而这个主键是系统自动生成的:
(1)但几个用户同时在添加记录时怎样保证主键的唯一和连续的,可能某用户是添加的是多条记录,如:甲用户添加两条记录,但添加主键是2003122201,乙用户这时候添加了一条2003122202,这时甲添加第二条时只能是200312223.
(2)但在保存是甲保存成功,(2003122201和2003122203),已没有保存成功(2003122202),这样在下一位用户添加记录主键必须先是(2003122202),在是(2003122204)
(3)但删除(2003122202)时,这样在下一位用户添加记录主键必须先是(2003122202)

解决方案 »

  1.   

    to fengbincn(坏坏) 
    能不能说点具体点,我想锁定表是不行的,我是要多个用户同时使用的
      

  2.   

    这个问题我也遇到过,是这么解决的。在真正写入数据库的时候才能得到真正的编号。
    1.把这个编号变成非主键(也不要Unique),另外弄一个比如自增长的字段作为主键;
    2.客户在提交前他不能知道真正的编号,只有提交了之后才行;
    3.给此表添加一个触发器,AfterInsert,Select Max(编号)+1 from xxxx,把此编号写入表中;
      

  3.   

    pazee(耙子) 说的是可以的`
      

  4.   

    对于多用户,如果你需要锁定表的时间太长是不适合事务处理的。
    不过,你可以改变方式,比如象pazee(耙子)说的
    也可以改变你操作表的方式,比如,把每个用户的操作时间缩小,
    只要用户感觉不到长时间等待就可以了!