例如,如果我为表的列指定一个唯一的属性,则需要在该列上输入一些内容才能执行插入查询。如果我尝试在没有该列数据的情况下进行插入,这会导致插入失败,那么下次插入成功时,AI 列索引将增加失败的次数。
这意味着无论插入是否成功,SQL 都会增加该索引。这样做有什么原因吗?
最佳答案
当INSERT
开始时,它会计算要插入的行数,并按该数量增加AI。然后它将它们分配给行。如果无法插入行(dup key、ROLLBACK 等),那么 AI 值已经被分配。现在它已经被“烧毁”了。
警告...有一种情况可以重用AI:删除
具有最高AI的行,停止并重新启动mysqld,然后下一个INSERT
将重用该 ID。这是因为重新打开表时会查找 MAX(id)+1
以了解接下来要使用的数字。
关于mysql - SQL AI 索引在插入失败时增加是否有任何特殊原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34296910/