2013-08-23 59 views
0

我有一个表格,我插入数据到MySQL工作正常。但是,当我从MySQL删除一些数据,并再次插入数据库的值自动增量值是从上一行值开始。 ForExample:从PHP删除后重置mysql自动增量字段值?

,如果我有1,2,3,4,5为ID在mydatabse,如果我删除4点5的ID从数据库 ,并开始从PHP将下一个数据。那么ID是来自6 ....但我需要得到身份证为4。可以任何人提供建议。提前感谢。

+1

的ID有**没有* *意思。试图让他们“无缝”是没有意义的。你为什么认为你“需要”无间隙IDS? –

+1

Duplicate:http://stackoverflow.com/q/740358/829533 – zzlalani

回答

1

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

0

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

您可以自己实现这个为"SELECT MAX(ID) + 1 FROM MYTABLE;"

但要注意:你将采取轻微但明显的性能损失。

  1. 如果您运行的更新同时,你的风险死锁
  2. (再次,如果你同时运行的更新),您将风险有两个插入使用相同的密钥。

您也可以通过在单独的表中运行您自己的计数器来实现此目的。你必须有程序逻辑才能在删除时正确地减少它,并且当“计数器”将成为争用对象时,你将再次遇到性能热点和死锁风险。

0

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

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

SELECT COUNT(id) FROM tbl; 

无论如何,如果你真的想改变其值的语法是:

ALTER TABLE tbl AUTO_INCREMENT=101;