表的数据如下:id name 
1  a
2  b
3  c如果删除第3条记录,再插入一条记录,表中的记录如下id name 
1  a
2  b
4  d
------------
这样自动增长列就会出现断号(不连续的号出现),如果解决这个问题?????

解决方案 »

  1.   

    如果一定要连续,则可以使用SET IDENTITY_INSERT ON 来做if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([id] int identity(1,1),[name] varchar(1))
    insert [tb]
    select 'a' union all
    select 'b' union all
    select 'c'delete from tb where id=3;SET IDENTITY_INSERT tb ON
    insert tb(id,name) select 3,'d'
    SET IDENTITY_INSERT tb OFFselect * from tb
    --测试结果:
    /*
    id          name
    ----------- ----
    1           a
    2           b
    3           d(3 行受影响)*/
      

  2.   

    如果你设定了那个列为标识列,自动增长1。就有这么个问题。反正表示是系统自动产生的没必要管。
    如果想知道到底刚刚插入的是什么标示,可以用select @@identity 取出刚刚生成的标示。要么就用上面一位兄弟说的那个
    SET IDENTITY_INSERT ON
    insert .......(显示指定插入的值)
    SET IDENTITY_INSERT OFF