Ωme*_*ega 5 mysql sql insert auto-increment
在MySQL中,我使用INSERT IGNORE语句将行插入表中。因为一列是UNIQUE,所以未插入某些行(因为它们已经存在)。执行该语句后,我注意到自动增量列在行之间缺少一些数字,后来我意识到这是由于被忽略且未添加的行而发生的。
如果没有插入任何行,是否可以将系统设置为不增加自动增量计数器IGNORE?
引用INSERT 的手册页:
如果使用 IGNORE 关键字,则执行 INSERT 语句时发生的错误将被视为警告。例如,如果没有 IGNORE,重复表中现有 UNIQUE 索引或 PRIMARY KEY 值的行会导致重复键错误,并且语句将中止。使用 IGNORE,该行仍然不会插入,但不会发出错误。
该INSERT IGNORE语法只是抑制某些错误消息的一种方法,当您意识到这些错误可能发生和/或想要在稍后阶段处理它们时,它会很有帮助。在幕后,您仍然可以进行常规插入,只是由于密钥被破坏而失败。MySQL 需要实际的行值来进行插入,并且 AUTO_INCRMENT 计数器将根据常规规则递增:
因此,除非您可以重新考虑您的逻辑(例如,在插入之前测试键值是否存在),否则重置计数器的唯一方法是ALTER TABLE:
ALTER TABLE t2 AUTO_INCREMENT = value;
Run Code Online (Sandbox Code Playgroud)
无论如何,差距并不重要。如果确实如此(例如,您正在生成需要关联的发票号码),则您可能使用了错误的工具来完成这项工作。