【发布时间】:2011-07-18 07:41:58
【问题描述】:
我的表中有一个主键列可以自动递增。但是,当我从具有最高主键 ID 的表中删除一行时(比如说 11)。然后下次我进行插入时,它会将密钥插入为 12 而不是 11(尽管逻辑上它可以使用 11,因为没有与密钥 11 关联的条目)。我怎样才能做到这一点?
【问题讨论】:
标签: mysql
我的表中有一个主键列可以自动递增。但是,当我从具有最高主键 ID 的表中删除一行时(比如说 11)。然后下次我进行插入时,它会将密钥插入为 12 而不是 11(尽管逻辑上它可以使用 11,因为没有与密钥 11 关联的条目)。我怎样才能做到这一点?
【问题讨论】:
标签: mysql
你确定要这个吗?一个自动增量列将保证一个唯一的数字,这就足够了。你可以更新我猜的下一个自动增量值(我得看看它是如何工作的),但我认为你不应该想要那个。
如果您需要控制列中的数字,您应该手动进行。
不过,您可以像这样更改自增数:
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 技巧的情况下解决这个问题:)
【讨论】:
Mysql 没有开箱即用的功能,您需要在应用程序中对其进行编码。您将遇到的一个问题是,如果 2 个事务想要获取和 id,其中一个事务将得到重复的 id 错误。当然,最好避免这种情况。
所有的数据库引擎都缺少这个“特性”,因为它不利于并发。
【讨论】: