在SQLSERVER 中如果使用自动获取ID的话,开始是从1开始一直累加的,但是如果以后删除了记录,它不是取最大ID加1 ,而是使用过的最大ID加1,也就是说,只要它使用过的ID就不会再用了,当然是在同一个表中,如果想得到新加入的ID的话,可以使用触发器来返回这个ID。

解决方案 »

  1.   

    不论你在INSERT之前或之后用Max(ID), 都要考虑并发性, 不要取到别人插入的ID. 比较可靠的办法是: begin tran
    ...
    insert into table ....
    select MAXID=max(ID) from table
    -- 这句在事务提交前执行,可以得到前面INSERT的最后一个ID.
    ...
    commit注意: 需要对自增的ID建立唯一索引.
      

  2.   

    你可以知道新生成的ID是多少,可以用Select @@Identity
      

  3.   

    songyangk说的对. 我忘了还有@@IDENTITY.
      

  4.   

    找到了,用Select IDENT_CURRENT('TableName')就可以,谢谢各位了