SQL AI 索引在插入失败时增加是否有任何特殊原因?

Is there any special reason why a SQL AI index increases on a failed insert?

例如,如果我给 table 的列一个 属性 是唯一的,它需要在该列上输入一些内容才能执行插入查询。如果我尝试在没有该列数据的情况下进行插入,这会导致插入失败,AI 列索引将增加额外的次数,在下次插入成功时失败。

这意味着无论插入是否成功,SQL 都会增加该索引。这样做的任何原因?

请参阅 MySQL documentation

innodb_autoinc_lock_mode 的文档

INSERT 开始时,它会计算要插入的行数并按该数量增加 AI。然后它为行分配它们。如果无法插入一行(dup key,ROLLBACK,等等),那么,AI 值已经被分配了。现在是 "burned".

注意...有一种情况可以重复使用 AI:DELETE 具有最高 AI 的行,停止并重新启动 mysqld,然后下一个 INSERT 将重复使用该 id。这是因为 table 的重新打开会查找 MAX(id)+1 以了解接下来要使用的数字。