【发布时间】:2011-08-20 22:51:34
【问题描述】:
使用 MySQL 5.1.49,我正在尝试实现一个标记系统
我遇到的问题是一个有两列的表:id(autoincrement),tag(unique varchar) (InnoDB)
当使用查询 INSERT IGNORE INTO tablename SET tag="whatever" 时,即使插入被忽略,自动递增 id 的值也会增加。
通常这不会是一个问题,但我希望有很多可能的尝试为这个特定的表插入重复项,这意味着我的新行的 id 字段的下一个值会跳跃太多。
例如,我最终会得到一个有 3 行但不好 id's 的表格
1 | test
8 | testtext
678 | testtextt
另外,如果我不执行 INSERT IGNORE 而是执行常规 INSERT INTO 并处理错误,自动增量字段仍会增加,因此下一个真正的插入仍然是错误的自动增量。
如果有 INSERT 重复行尝试,有没有办法停止自动递增?
据我了解,对于 MySQL 4.1,此值不会增加,但我想做的最后一件事是提前执行大量 SELECT 语句以检查标签是否存在,或者更糟糕的是,降级我的 MySQL 版本。
【问题讨论】:
-
你在使用 InnoDB 吗?如果是这样,请参阅*.com/questions/2787910/…
-
啊是的。我只是做了一个快速编辑。我会检查链接tnx
-
只是对该链接的跟进。可悲的是,它并没有真正解决问题,而是尝试为 id 字段使用 bigint 以避免表爆炸。不过谢谢
标签: mysql insert duplicates innodb auto-increment