防止MySQL id字段中出现空白

时间:2009-12-24 04:47:27

标签: mysql

我有一个带有自动增量id字段的MySQL表。当我删除一行然后插入一个新行时,我删除了我删除的行的id,并且new获得的id大于前一行的id。有什么办法可以阻止这个吗?我希望新行能够取代旧行。是否有一个重要原因导致我失踪?

3 个答案:

答案 0 :(得分:1)

MySQL自动递增功能永远不会向后,除非你强制它。并且有充分的理由。如果对丢失的记录(日志,表等等)有迷路引用怎么办?

您可以使用此命令强制它:

ALTER TABLE tbl AUTO_INCREMENT = 1000;

或者,如果您需要在查询中执行此操作:

LOCK TABLES tbl WRITE;
SELECT @id := MAX(id) FROM tbl;
INSERT INTO tbl SET id=@id, ...;
UNLOCK TABLES;

如果您使用的是InnoDB,则可以在交易中执行此操作......

但最好还是留下它。

答案 1 :(得分:0)

自动增量字段的定义是每个插入的新行都保证获得唯一值。如果要保留旧值,则必须更新行而不是替换它。如果您的设计要求自动增量列值是连续的,那么您必须自己管理它。

答案 2 :(得分:0)

我很抱歉,但我不知道具体原因。

除非你TRUNCATE表或明确指定id,否则你无法避免这种行为。