2011-06-05 74 views
0

我有一些MySQL表使用主键与auto_increment功能,这一切似乎在第一次插入记录时,但是当我删除它之间的任何记录它不会重置auto_increment计数器但继续使用最后一个ID。MySQL AUTO_INCREMENT计数器给出了一些问题

例如我插入了记录与以下ID的

1,2,3,4,5,6

当我删除之间以及下一次5,6而我插入另一行它从7继续,而我希望它从5继续它只是不重置auto_increment计数器,我试图通过查询这个命令ALTER TABLE amenities AUTO_INCREMENT = 1;修改表仍然它似乎并没有工作。

这是我从phpMyAdmin导出获得的其中一个表格的示例DDL。

CREATE TABLE `amenities` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(50) NOT NULL, 
    PRIMARY KEY (`id`), 
    UNIQUE KEY `name` (`name`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ; 
+0

试图改变auto_increment字段的自然行为是一个坏主意。如果你想显示一个累进数字,你可以在你的查询中使用一个变量或以编程方式使用计数器。 – 2011-06-05 12:01:29

+0

Duplicate:http://stackoverflow.com/questions/2214141/mysql-auto-increment-after-delete – technology 2011-06-05 12:01:59

回答

2

这不是AUTO_INCREMENT如何在MySQL或任何其他数据库中工作。 AUTO_INCREMENT总是前进。永远不要重新填补空白。

如果您需要描述的行为,则需要编写自己的代码来处理该行为。在你的客户端程序中,在数据库或任何你觉得它更好的地方。请记住,您需要非常好地处理事务,以避免在数据库负载过重时出现并发问题。

+0

我已经读过它的某个地方说你可以重置计数器,不是'AUTO_INCREMENT = 5'我的最后一行示例代码就是为了这个目的。 – 2011-06-05 12:03:05

+0

是的,你可以重置计数器。但是,当使用'AUTO_INCREMENT'时,这不是**自然**。 – 2011-06-05 12:04:10

+0

啊,我从来不知道这样做是不好的,谢谢你对我的启发。 :) – 2011-06-05 12:06:50