从php删除后重置mysql自动增量字段值?

时间:2013-08-23 08:01:17

标签: php mysql

我有一个表单,我将数据插入mysql工作正常。但是当我从mysql中删除一些数据,并再次将值插入数据库时​​,自动增量值从前一行值开始。 ForExample:

  

如果我在mydatabse中有1,2,3,4,5作为id,如果我从数据库中删除了4和5个id   并开始从 PHP 插入下一个数据。然后id来自6 ....但我需要得到id为4。任何人都可以给出建议。谢谢你。

3 个答案:

答案 0 :(得分:1)

我担心MySQL不允许你“重置”这样的AUTO_INCREMENT字段。如果您需要该行为,则必须停止使用AUTO_INCREMENT并手动生成ID。

答案 1 :(得分:0)

自动增量不会(也不能)保证不间断的序列。

您可以自己实施"SELECT MAX(ID) + 1 FROM MYTABLE;"

但要注意:你会受到轻微但明显的表现。

  1. 如果您同时运行更新,则存在死锁风险
  2. (同样,如果您同时运行更新),您将面临两个具有相同密钥的插入的风险。
  3. 您也可以通过在单独的表中运行自己的计数器来实现此目的。你必须有程序逻辑才能在删除时正确地减少这一点,而且,由于“计数器”将成为争用的对象,你将再次获得性能热和死锁的风险。

答案 2 :(得分:0)

您不应该在生产环境中使用AUTO_INCREMENT值,让MySQL为您处理它的价值。

如果你需要知道你有多少行可以使用

SELECT COUNT(id) FROM tbl;

无论如何,如果您真的想要更改其值,则语法为:

ALTER TABLE tbl AUTO_INCREMENT=101;