MySQL中的自动增量

时间:2011-03-18 16:31:14

标签: mysql

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

2 个答案:

答案 0 :(得分:6)

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

如果您需要控制列中的数字,则应手动执行此操作。

然而,您可以像这样更改自动增量数字:

ALTER TABLE tbl AUTO_INCREMENT = 100;

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

另一个评论:如果你的数字是1到10,而你删除5,你就不能轻易做到这一点。你很难做出下一个auto_increment 5因为6已经存在了。 所以,再次,当你可以为你的例子做一些肮脏的事情时,在真实的环境中做这件事真的很难。也许开始一个新的问题描述你的情况,并征求建议如何在没有auto_increment技巧的情况下解决这个问题:)

答案 1 :(得分:0)

Mysql没有开箱即用的功能,您需要在应用程序中对其进行编码。您将遇到的一个问题是,如果2个事务想要获取和id,则其中一个将获得重复的id错误。当然,最好避免这种情况。

所有数据库引擎都缺少这个“功能”,因为它不利于并发。