【发布时间】:2018-01-17 21:49:09
【问题描述】:
好的,所以我有下表:
CREATE TABLE `Tags` (
`tag_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`tag` varchar(100) DEFAULT NULL,
PRIMARY KEY (`tag_id`),
UNIQUE KEY `tag` (`tag`),
KEY `tag_id` (`tag_id`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
SET FOREIGN_KEY_CHECKS=1;
当我运行以下查询时,它似乎在增加主键,即使它找到重复项(即使它没有添加重复项)。
INSERT INTO Tags (tag) VALUES ('book'),('cats'),('dogs') ON DUPLICATE KEY UPDATE tag = tag
你得到...
tag_id | tag
==============================
1 | book
2 | robots
3 | doodles
5 | cats
6 | dogs
==============================
如何防止这种情况发生?
【问题讨论】:
-
没有什么可以阻止的。
auto_increment的号码已用完。它们永远不会被重复使用。这就是它的工作原理,如果它看起来“愚蠢” - 它不是。如果你试图“解决”这个问题,你实际上会造成伤害。查询似乎也不合适,看起来好像您在INSERT IGNORE之后。
标签: mysql insert duplicates unique