首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >插入忽略增加自动增量计数器,甚至没有添加记录?

插入忽略增加自动增量计数器,甚至没有添加记录?
EN

Stack Overflow用户
提问于 2012-04-25 15:40:11
回答 1查看 5.4K关注 0票数 4

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

如果没有插入子句的行,是否可以设置系统不增加自动增量计数器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 16:20:08

引用供插入的手册页的话

如果使用“忽略”关键字,则执行INSERT语句时发生的错误将被视为警告。例如,在不忽略的情况下,重复表中现有的唯一索引或主键值的行将导致重复键错误并中止该语句。使用“忽略”时,行仍未插入,但未发出错误。

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

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

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

代码语言:javascript
复制
ALTER TABLE t2 AUTO_INCREMENT = value;

这并不是说差距应该是重要的。如果他们这样做了(例如,您正在生成需要相关的发票号码),那么您可能使用了错误的工具来完成这项工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10319003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档