我用了如下语句生成一个Table,其中ID是个自动累加值:
CREATE TABLE table1( [ID] int IDENTITY(1,1) Not NULL, [NAME] varchar(50), PRIMARY KEY (ID) ) 
但问题是,如果删除表中一些数据,再次插入的时候,那个ID还是按以前的顺序递增。
比如,表中有 ID=1 ..... ID=100 共100条数据,现在我删除了50条,再次添加数据的时候,ID还是从101开始!!!我希望从51开始。
请问有办法解决么???

解决方案 »

  1.   

    DBCC CHECKIDENT ('table1',RESEED,50)
    go
      

  2.   

    DBCC CHECKIDENT ('table1',RESEED,50)这里的50不会是死的吧?我需要的是动态的,不是Hardcode的。还有我需要这种清洁语句在执行删除操作后(或者插入操作前)自动运行,不知道有没有办法呢?
      

  3.   

    至少可以有个post delete trigger之类的咚咚自动执行这个语句吧?DBCC CHECKIDENT ('table1',RESEED,50)
      

  4.   

    我的这种删除操作不会从中间删除数据的,所以至少可以有个post delete trigger之类的咚咚自动执行这个语句吧?DBCC CHECKIDENT ('table1',RESEED,50)
      

  5.   


    如果是这样,用触发器也行,在插入数据之前处理也行,
    那个50,就是表中存在的记录数,可以用select count(1) from tb 取得
      

  6.   

    那是不是这样啊:
    DBCC CHECKIDENT ('table1',RESEED,select count(1) from t) 怎样写这个触发器呢?谢谢!
      

  7.   

    create trigger tri_delete_tb
    on tb
    after delete
    as
    begin
    declare @cnt int;
    set @cnt=isnull((select count(1) from tb),1);
    DBCC CHECKIDENT ('tb',RESEED,@cnt);
    end
    未测试的,你试试