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

标签 mysql sql insert innodb auto-increment

例如,如果我为表的列指定一个唯一的属性,则需要在该列上输入一些内容才能执行插入查询。如果我尝试在没有该列数据的情况下进行插入,这会导致插入失败,那么下次插入成功时,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/

相关文章:

excel - 防止用户在表中插入行,除非使用 VBA

SQL查询选择具有非聚合值和聚合函数表达式的列

mysql - 如何替换多列中存在的值?

mysqli 到 pdo 简单选择语句

php - 使用 PHP 从 MySQL 数据库填充多个组合框

sql - 将行非规范化为列是否可以提高 SQL Server 的性能?

c++ - 二叉搜索树插入垃圾数据

mysql - 如何知道SQL中记录的插入日期

mysql - MYSQL 查询速度慢,需要帮助理解索引

mysql - 如何根据月份和年份列对 sql 表进行排序