SQL AI 索引在插入失败时增加是否有任何特殊原因?
Is there any special reason why a SQL AI index increases on a failed insert?
例如,如果我给 table 的列一个 属性 是唯一的,它需要在该列上输入一些内容才能执行插入查询。如果我尝试在没有该列数据的情况下进行插入,这会导致插入失败,AI 列索引将增加额外的次数,在下次插入成功时失败。
这意味着无论插入是否成功,SQL 都会增加该索引。这样做的任何原因?
中 innodb_autoinc_lock_mode
的文档
当 INSERT
开始时,它会计算要插入的行数并按该数量增加 AI。然后它为行分配它们。如果无法插入一行(dup key,ROLLBACK
,等等),那么,AI 值已经被分配了。现在是 "burned".
注意...有一种情况可以重复使用 AI:DELETE
具有最高 AI 的行,停止并重新启动 mysqld,然后下一个 INSERT
将重复使用该 id。这是因为 table 的重新打开会查找 MAX(id)+1
以了解接下来要使用的数字。
例如,如果我给 table 的列一个 属性 是唯一的,它需要在该列上输入一些内容才能执行插入查询。如果我尝试在没有该列数据的情况下进行插入,这会导致插入失败,AI 列索引将增加额外的次数,在下次插入成功时失败。
这意味着无论插入是否成功,SQL 都会增加该索引。这样做的任何原因?
innodb_autoinc_lock_mode
的文档
当 INSERT
开始时,它会计算要插入的行数并按该数量增加 AI。然后它为行分配它们。如果无法插入一行(dup key,ROLLBACK
,等等),那么,AI 值已经被分配了。现在是 "burned".
注意...有一种情况可以重复使用 AI:DELETE
具有最高 AI 的行,停止并重新启动 mysqld,然后下一个 INSERT
将重复使用该 id。这是因为 table 的重新打开会查找 MAX(id)+1
以了解接下来要使用的数字。