2011-03-18 54 views
2

我有我的表中的一个主键列自动增量。但是,当我从主键ID最高的表中删除一行(可以说11)。然后下一次我做一个插入它插入的密钥为12而不是11(尽管逻辑上它可以使用11,因为没有与密钥11相关联的条目)。我怎样才能做到这一点?在MySQL中的自动增量

回答

6

你真的确定你想要这个吗?自动增量列将保证唯一的数字,这就够了。你可以更新下一个自动增量值(我将不得不查看它的工作原理),但我不认为你应该这样做。

如果您需要控制列中的数字,您应该手动进行。

不过,您可以更改像这样的自动增量号:

ALTER TABLE tbl AUTO_INCREMENT = 100; 

(来源:http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

另一句话:如果你有一个数字一到十,并删除5,你不能轻易做这个。你很难做出下一个auto_increment 5,因为6已经在那里了。 所以再次,虽然你可以做你的例子脏东西,真的很难在真实环境中做到这一点。也许开始一个新的问题,描述你的情况,并寻求建议如何解决这个问题没有auto_increment技巧:)

+2

是的。您不应该再次使用已删除的ID。 – 2011-03-18 16:35:10

+0

好吧,如果这是最好的做法 – aherlambang 2011-03-18 16:48:40

0

Mysql不具备该功能开箱即用,您需要编写代码你的申请。你将遇到的一个问题是,如果两个交易想要获得和id,其中一个会得到一个重复的id错误。当然,这是更好的避免。

所有的数据库引擎都缺乏这个“功能”,因为它不适合并发。