如何删除MySQL中的行,但强制所有下一行的编号为我上次ID的编号?

时间:2011-06-29 06:58:23

标签: mysql

我有一个1000行的表。

我需要删除5到1000之间的行,因此前4个保持不变,删除4之后的eveythin。

但是,如果我写下这样的话:

DELETE FROM table_name WHERE id > 4

INSERT后的下一条记录的编号是1001,我不想要。

如何删除行,但强制所有下一行的编号为我上次ID的编号?

P.S。我不能使用ALTER TABLE删除所有表。

提前致谢。

5 个答案:

答案 0 :(得分:0)

Can you do this?


ALTER TABLE theTableInQuestion AUTO_INCREMENT=5

答案 1 :(得分:0)

如果您的id - auto_increment字段需要使用ALTER TABLE来更改它的值......

但是如果不可能你可以尝试不删除行但是将值设置为NULL或“”或0然后只是更新那里的值 不是INSERT而是UPDATE ... WHERE id = 5

答案 2 :(得分:0)

认为该表位于auto_increment。如果您不能ALTER TABLE,则需要在每个查询中手动提供ID,例如

 INSERT INTO table (id,value) VALUES ((SELECT MAX(id)+1 FROM table), value);

(参见对锁表的评论)

答案 3 :(得分:0)

使用MySQL?你没有。除非你调用ALTER TABLE,否则AUTO_INCREMENT永远不会......减少。您是否考虑过使用触发器DELETE?

(您可能需要对此进行调试)

delimiter |

CREATE TRIGGER testref AFTER DELETE ON theTableInQuestion
  FOR EACH ROW BEGIN
    IF SELECT COUNT(*) FROM test1 < 5 THEN
       ALTER TABLE theTableInQuestion AUTO_INCREMENT=5
    END IF;
  END;
|

答案 4 :(得分:0)

DBCC CHECKIDENT('table_name',RESEED,new_reseed_value)==&gt;适用于MS-SQL


 ALTER TABLE table_name AUTO_INCREMENT = 5 ==&gt;适用于MySQL