本人服务器装一mssql数据库,表中的一个“编号”字段设置为自动编号,每次增加值为1,在客户端通过access界面进行记录的添加,最近发现的问题,比如说自动生成一个编号44455,客户端有二台机子同时输入的情况,比方说客户端A输入“客户张三”这个记录,生成一个号44455,然后打印出来;客户端输入“客户李四”这个记录,生成的号也是44455,也可以打印出来,但是实际上在服务器上并没有保存成功。这样导致“客户李四”这条记录变成了无头档案了。怎么办?有高手帮解决一下是什么问题??
因为之前好像没出现这个问题,是不是现在记录数多了(现在有近五万条记录了)的原因???谢谢!!!!!!!!!!

解决方案 »

  1.   

    Access界面进行记录添加时,先产生一个临时编号,如44455.
    当点击保存时,判断数据库中是否存在44455编号?若不存在,则用44455新增到数据库,前端程序中的编号信息不变.若已存在,则再编一个编号,并更新到前端程序中的编号信息.
      

  2.   


    我判定是客户端A与B同时保存记录,也就是同时向服务器叫号,另外客户端A与B同时用的一个管理员sa帐号在登陆,是不是换用不甘落后的帐号登陆就不会出现这种问题。
      

  3.   

    自动增长的编号不会产生相同的,除非你用了IDENTITY_INSERT 开关,并且编号是程序产生的,我觉得不会是这种情况,应该是产生了一个号被A与B同时获取了,这种情况应该看程序代码
      

  4.   

    估计是你程序中select 了 max(id)之类的操作了吧
      

  5.   


    怎么解决?如果用了先max(id),然后用此ID作为标示量然后插入数据的话
    把select max(id)+insert 放在一个事务中,可避免取得重复ID的情况
    因为插入操作未提交之前,select max(id)将取不到值
      

  6.   

    新建一张表来管理 id,然后把这个id当做另一张表的主键关联起来,每次插入前先select max(id)+1 from ....然后再插入
      

  7.   

    楼上的二位,我今天看了一下程序,没找到select 了 max(id)之类的操作,有更简便的措施么,不要写程序之类的,只要简单对表的属性设置一下,可行不??