1.建表:CREATE TABLE `tb_music` (
  `autoID` int(11) NOT NULL AUTO_INCREMENT COMMENT '自动编号',
  `name` varchar(30) DEFAULT NULL COMMENT '音乐名',
  `path` varchar(50) DEFAULT NULL COMMENT '文件路径'

autoID为自增列2.表中有如下记录:
     autoID name                           path                                           
----------- ------------------------------ ---------------------- 
          1 天涯.mp3                         d:\天涯.mp3                     
          2 大海.mp3                         d:\大海.mp3                     
          3 男人.mp3                         d:\男人.mp3                     
          4 好天地.mp3                       d:\好天地.mp3    3.当执行deleteByID(2),对应的sql语句是:
String sql = "delete from tb_music where autoID=?";
操作后,表记录如下:     autoID name                           path                                           
----------- ------------------------------ ---------------------- 
          1 天涯.mp3                         d:\天涯.mp3                               
          3 男人.mp3                         d:\男人.mp3                     
          4 好天地.mp3                       d:\好天地.mp3    4.我想提问的问题:
当我删除了autoID为2的记录后,我想让autoID保持着有顺序的编号,像这样:
1
2
3
而不是上面的那样:
1
3
4那么应该怎么办?是否有什么好的方法?请各路高手给点意见。
小生在此感谢了。

解决方案 »

  1.   

    莫非你要同时做一个
    "update tb_music set autoID =autoID-1 where autoID>?";
    动作?
    不过这样的话,你下一次的自增任然是5开始,成为1 2 3 5。
    还得
    "alter table tb_music AUTO_INCREMENT = AUTO_INCREMENT -1;"
    不过总感觉劳民伤财数据量大的时候这个动作会导致你次数稍多的删除动作连在一起触发毁灭性地效果。
      

  2.   

    lz的意思是想让表里面的数据永远连续的排列!但是用主键是不行的了!
    正如1楼所说“主键就相当于我们的身份证号码,并不会因为人的去世,而重置所有人的身份证号码。”如果lz非要这样的话,可以在查询的时候给表里面的数据排序!
    可以就按主键排序,这样可以达到你要的结果!如果要多次使用的话,就建一个视图搞好!
      

  3.   

    这个不是jdbc的问题.
    1.对于自增列,没有楼主所需功能.
    2.解决办法是,autoID不要自增列属性,删除记录后,重新定义整个表的autoID次序.开销太大.
    3.问题:楼主为何需要保持这个编号?
      如果的确需要这个功能,按autoID次序查询后,在程序中引入顺序的编号.