我有一个唯一的密钥标签和一个auto_increment id。
当一个用户发送重复的主题标签时,它将不会被插入但ID会增加。
例如:
5 amazing
1 cool
8 do
3 nice
请注意,有一个用户发送了cool
而另一个用户发送了cool
,所以我没有ID为什么?
CREATE TABLE IF NOT EXISTS `hashtags` (
`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`hashtag` varchar(100) NOT NULL,
UNIQUE KEY `hashtag` (`hashtag`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1 ;
答案 0 :(得分:0)
这是由InnoDB引擎内置的执行顺序引起的“正常”行为。可以通过这种方式实现,以加快执行速度。使用自动增量时,存在某种模型,用于存储表的下一个可用索引(id)。因此,插入带有insert clause引擎的项目首先会询问该模型中的下一个可用索引(id),这也会增加该值,以便为下一个想要下一个id的人做好准备。因此,当以这种方式实现时,模型不关心insert子句执行是否成功。