这个问题我也遇到,可不可以用select语句确定这条纪录~?

解决方案 »

  1.   

    新添加的记录的id是最大的,可以用select max(id) as maxid from table来获得
      

  2.   

    用max()取了再程序监控max()不行吗,不过需要外部程序……
      

  3.   

    那就在添加记录前,先用max(id)获得当前最大的id,然后添加记录,那么你添加的记录的id就是原最大ID值+1
      

  4.   

    to:tommychim(大脚鸟)   错了你这样做也没有用,并发也不可以解决。
    max(id)大家都用的时候,ID可能得到的是一样的。
    你可以写个小程序测试一下。
      

  5.   

    to:lynxliu
    是否单号问题?看这一贴:
    http://www.csdn.net/expert/topic/426/426165.shtm
      

  6.   

    t我希望可以在程序里面解决
    关键是ADO可不可以锁定数据表。“数据库”说的对,并发问题一定要保证操作的原子性。也就是我需要先锁定数据表,再操作,然后查询得到最大值,再释放锁。
    我不知道在ADO里面怎么做,我是用delphi访问。我觉得单号问题把问题搞得复杂了,利用自动增的机制,可以保证不重复,关键还是锁定表。
    谁能给出代码?
    相比之下,我更喜欢Oracle的Seq,方便。
      

  7.   

    Access中可以使用DAO的Recordset的AddNew, LastModified和Book属性。Function GetMaxNo() As Long
      'Open db, rs objects...
      'add one new record
      rs.AddNew
      'Set the new values for fields
      rs.Update
      Set rs.book = rs.LastUpdated
      GetMaxNo = rs.Fields("AutoNum").Value
      'Close the rs and db objects
    End Function
      

  8.   

    一,在一个事务里用select max(id) from yourtable
    二,新增后set yourID=@@Identity 
      

  9.   

    如果不用自动增加,因为在sql server中没有before insert 型的触发器,所以是办不到的