注册 登录
编程论坛 MySQL论坛

mysql中的重要问题

发布于 2010-07-15 16:48, 2305 次点击
我建了一个表,主键为id
  id  name
  1   a
  2   b
  3   c
  4   d
我如何来实现,当我删除id为2的时候,
  id  name
   1   a
   3   c
   4   d
那么我如何来达到,自动将id重新编号
  id    name
   1     a
   2     c
   3     d
5 回复
#2
cnenc2010-07-16 10:59
DELETE FROM `tab1` WHERE `tab1`.`id` = 2;
UPDATE `tab1` SET `id` = `id`-1 WHERE `tab1`.`id` > 2;
#3
2010-07-17 09:08
回复 2楼 cnenc
我说的意思是,如果用程序来做的时候,我删除一次,不可能就要执行一次这条语句吧。
  就是当我在程序里面删除了一条记录后,他的id自动就在数据库里面发生变发了
#4
2010-07-17 09:10
回复 2楼 cnenc
可不可以用触发器来做,不过我不会写触发器,
         就是当我删除一条记录后,就触发id发生变化的
#5
cnenc2010-07-17 15:38
重编ID ,建议只在手动处理数据的时候使用.

因为如果频繁重编的话. Mysql 要处理很多更新,重建索引,重建缓存等一堆事情. 严重影响 Mysql 性能.

如果你的程序非要这么做的话,
那只能说明你的程序没有规划好.
#6
lhep0412012-04-16 00:02
学习中!问一个汗颜的问题,DELETE FROM `tab1` WHERE `tab1`.`id` = 2;
 DELETE 是不是只能删主键才行。??
1