我有个表的主键用自增的ID,一直使用都是不断递增的,经过多次移动数据库后,新插入的ID却不是当前表中最大的,而且使用以前被删除记录的ID值,为什么会这样?用什么方法可以使这个情况不会发生吗?ID的值是必须是绝对唯一的.

解决方案 »

  1.   

    可能是表在经过多次移用时,被其他人重置了IDENTITY列的种子.
    楼主可以使用dbcc checkident来重新设置种子,让ID从新种子开始递增.例如:
    declare @maxid int
    select @maxid = max(标识列) from 表名
    ----让新记录的标识列值从最大ID开始递增
    dbcc checkident(表名,RESEED,@maxid)
      

  2.   

    试试看:SET IDENTITY_INSERT
    允许将显式值插入表的标识列中。语法
    SET IDENTITY_INSERT [ database.[ owner.] ] { table } { ON | OFF }是不是这个问题