假设我在表格中有一个字段,说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
?请帮帮....
答案 0 :(得分:1)
我认为没必要。首先,如果要这样做,则必须在索引(树?)中搜索任何未使用的数字。想象一下,如果你有一百万行,那么即使是一个简单的插入也会很慢。 id也可以用作插入的基本顺序,如果你开始重用,那么这就是毁了。
答案 1 :(得分:1)
最低摩擦方法可能是有一个单独的表,记录每次删除记录时插入的可重复使用的ID(理想情况下使用触发器)。如果要插入新记录,请查看此表并查看是否有要重用的ID。如果是的话,使用它们;如果没有,只需正常插入。这也应该可以让您轻松找到范围内未使用的ID。如果将存储每个可循环使用ID的后备表中的列编入索引,这应该是快速的。