insert 失败也会递增 AUTO_INCREMENT

一般我们的id是自增的,保证每一行数据的唯一性,如果我们用 insert 语句插入,第一次返回正常,后面返回错误的话,AUTO_INCREMENT 会默认自增。

所以还是判断一下要增加的数据是否存在,如果仅仅是insert,有可能会导致 id 列数值溢出。

本作品采用《CC 协议》,转载必须注明作者和本文链接
六月的风
Junwind
讨论数量: 2
陈先生

这个行为和事务回滚是一样的。 如果在事务中 create 了新纪录,但是事务被回滚了,你也会发现 AUTO_INCREMENT 的值夜发生了变化。 虽然你 insert 失败了,但是 insert 的行为也获取到了最新的 ID,直接导致内存中表的自增 +1了。 原因: MYSQL 表的 AUTO_INCREMENT 是存在内存中的,如果回滚的话可能会有预期外的影响,所以不存在负值操作,同时这个值是在 MYSQL 启动的时候便写入到内存中的。

1个月前 评论
Junwind (楼主) 1个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!