gpt4 book ai didi

mysql - INSERT IGNORE 即使没有添加记录也会增加自动递增计数器?

转载 作者:行者123 更新时间:2023-11-29 03:09:37 26 4
gpt4 key购买 nike

MySQL 中,我使用 INSERT IGNORE 语句向表中插入行。因为一列是 UNIQUE,所以一些行没有插入(因为它们已经存在)。执行该语句后,我注意到自动递增列在行之间缺少一些数字,后来我意识到这是由于忽略和未添加的行造成的。

如果没有使用 IGNORE 子句插入行,是否可以设置系统不增加自动递增计数器

最佳答案

引自manual page for INSERT :

If you use the IGNORE keyword, errors that occur while executing theINSERT statement are treated as warnings instead. For example, withoutIGNORE, a row that duplicates an existing UNIQUE index or PRIMARY KEYvalue in the table causes a duplicate-key error and the statement isaborted. With IGNORE, the row still is not inserted, but no error isissued.

INSERT IGNORE 语法只是一种抑制某些错误消息的方法,当您意识到这些错误可能发生和/或希望在稍后阶段处理它们时,它会很有帮助。在幕后,您仍然有一个常规插入,只是它因违反 key 而失败。 MySQL 需要实际的行值来进行插入,并且 AUTO_INCREMENT 计数器将根据 regular rules 递增。 :

  1. 该列的值为 NULL。
  2. 未设置该列的值。
  3. 该列的值大于计数器。

因此,除非您可以重新考虑您的逻辑(例如,在进行插入之前测试键值是否存在),否则重置计数器的唯一方法是ALTER TABLE :

ALTER TABLE t2 AUTO_INCREMENT = value;

无论如何,差距并不重要。如果他们这样做(例如,您正在生成需要关联的发票编号),则您可能使用了错误的工具来完成这项工作。

关于mysql - INSERT IGNORE 即使没有添加记录也会增加自动递增计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10319003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com