解决方案 »

  1.   

    你插入数据时,自增长的字段不要插入数据,让SQL SERVER给你自动插入,如果你主动插入自增长字段,会在你最大的数据上面加1
      

  2.   

    +1
    sqlserver的增长机制跟oracle不一样
    oracle用的序列,每次从序列里去取,跟你表里存了什么无关.
    如果你当前序列值是100,你手动插入个101进去,下次自动插入的时候就会报错
    而sqlserver本身按你当前内容最大值累加
      

  3.   

    如果要写“一种情况”的测试,你可以并发5个程序去向数据表里分别写10条数据,然后让第4个程序的第8条事务回滚(或者别的什么“跳出”做法),尽管此时你根本没有 Commit(提交)事务, 你可以100%地看到这个数值序列中间至少跳了1、2号,不可能是连续的。人家自增字段本来就是很随意地“自增”的,根本没费力气去给你保证连续性,根本没有这个功能。
      

  4.   

    自增长的数值出现后,再删除,再插入,不会继续用这个值的,会取该表已经出现过的自增长的最大数据加1,无论这个最大的数据在不在了除非truncate表从1重新开始
    比如1,2,3,把3删除了,下次再插入就会从4开始,3这个值表里面是看不到的,也不会再用的。