使用“AUTO_INCREMENT” - mysql从字段中获取未使用的id

时间:2014-01-01 09:05:36

标签: php mysql auto-increment

假设我在表格中有一个字段,说tb_example名为id。此id具有 AUTO_INCREMENT 属性。所以在每个新的插入中它都像1,2,3,.....等等。

现在假设有10行数据,标识为1-10。有人删除了id=5的数据。现在对于下一个插入,我想在位置5 NOT IN 11 中插入数据。此外,我想在插入之前获得未使用 id。这意味着我想获取未使用的id并使用像

这样的查询插入下一个数据
"INSERT INTO tb_example .......... WHERE id=".$unused_id;

是否可以使用任何简单的函数或流程来获取未使用的id也可以在范围内使用未使用的id?就像我想知道100到200内是否存在任何未使用的id?或者我是否需要使用逻辑编码找到id?请帮帮....

2 个答案:

答案 0 :(得分:1)

我认为没必要。首先,如果要这样做,则必须在索引(树?)中搜索任何未使用的数字。想象一下,如果你有一百万行,那么即使是一个简单的插入也会很慢。 id也可以用作插入的基本顺序,如果你开始重用,那么这就是毁了。

答案 1 :(得分:1)

最低摩擦方法可能是有一个单独的表,记录每次删除记录时插入的可重复使用的ID(理想情况下使用触发器)。如果要插入新记录,请查看此表并查看是否有要重用的ID。如果是的话,使用它们;如果没有,只需正常插入。这也应该可以让您轻松找到范围内未使用的ID。如果将存储每个可循环使用ID的后备表中的列编入索引,这应该是快速的。

相关问题