请教各位高手一个弱弱的问题,Delphi7+SQLserver2000,在某表中设置一个ID,实现序号的自增功能,比如说表里有一个记录,则ID=1,再增加一条记录ID=2,3,...等等,但是当我发现删除部分数据的时候,或者清空表的时候,ID不是从1开始,而是从好几百开始,请问,怎样在清空或者删除部分数据后,让ID重新排序或按最后的数据调整数据?50分相赠,在线等

解决方案 »

  1.   

    在“企业管理器”中的数据表设计状态,可以更改该字段的“标识种子”应该可以实现。如果在程序中,不知道啊有什么好的办法,如果把该字段先去掉,然后再加上,不知道行不?
    alter table data
     DROP COLUMN EE 
    GO
    alter table data
     ADD EE [int] IDENTITY (1, 1) NOT NULL  
      

  2.   

    不用删除..用
    truncate table tablename就可以了
      

  3.   

    truncate table tablename
    这是清空..
    删除部分数据的话..
    你就把数据再插入到一个临时表中.再清空.再插回来,再删除临时表.就可以了.
      

  4.   

    可以提交下面的script命令
    DBCC  CHECKIDENT  (YourTable, RESEED,1)  --  将自增种子设置为1
      

  5.   

    自增功能我已经设置了,现在的问题是怎样保持序号ID与实有记录数据的同步,总不能第一条记录ID一下就是655吧,我说的意思是保持ID与实有记录的一一对应,如第一条ID就是1,第100条ID字段数值就是100,无论中间怎样删除添加,都能保持一致!有没有成功的做法?
      

  6.   

    在ACCESS里能实现 在SQLSERVER里不会
      

  7.   

    暈 何必自增呢
    直接寫代碼
    每次先查出來MAX(Yourfield) 然後記錄一下(比如變量i用來記錄),等你插入新數據的時候Yourfield:=i+1  可以么?
      

  8.   

    这个id一点意义都没有。
    不知你要什么样的功能,这篇文章或许可以提供点思路
    http://www.csdn.net/develop/article/18/18627.shtm
      

  9.   

    SQL自增字段是不支持清零的,ACCESS可以通过压缩数据库实现你可以如下:首先select * into xxx,然后删除表再重新命名XXX
      

  10.   

    truncate table tablename
    这是清空..
    删除部分数据的话..
    你就把数据再插入到一个临时表中.再清空.再插回来,再删除临时表.就可以了.