有一张表包括三个字段ID,Name,Password
其中ID设为自动增长字段,加入插入5条数据后,则ID为5此时删除3条数据,在增加两条数据,ID依然为7,
也就是说ID在删除数据的时候没有减少这是为什么?有什么方法实现删除数据是ID也相应的减少呢?小弟初学SQL,可这问题问得弱弱的求解,谢谢。(自增字段没有自减属性。)

解决方案 »

  1.   

    在ORACLE里,自增长要设置一个触发器,当插入数据的时候调用一个自增长序列。。
    这个序列的增长值可以自己设置。
    SQLSERVER可以在字段上直接设置自增长值,但原理应该是一样的。。要是设置一个删除时触发递减序列的触发器就可以实现你要的功能,但是没有试过不知道行不行
      

  2.   

    删除行,会对自增列造成不连续。
    http://msdn.microsoft.com/zh-cn/library/ms187342.aspx
      

  3.   

    每次更新前取上一次最后的ID的值,然后ID+1更新当前记录,这个对性能有一点影响,但能满足你的需求!
      

  4.   

    truncate table 这样可以保持自增列,但是数据会删掉,或者去掉自增属性,每次取上一个id加1
      

  5.   

    ID不设置为自动增长,改为排序列,自动增长列换个名字,ID就不会在删除的时候继续往后加了,具体代码自己实现
      

  6.   

    主键本来就不应该变换的,其实你需要的应该是ROW_NUMBER()
      

  7.   

    楼主为什么要这个功能?
    是够可以考虑再加一个字段,不是自增的MyID。
    表变成这样ID,MyID,Name,Password。 
    或者就把ID设置成不自动增长字段。
      

  8.   

    九楼,正解!ROW_NUMBER()其实良好的数据库设计是一般不会设计自增ID的,企业级应用中GUID使用的比较广泛