auto_increment id是否带有唯一键?

时间:2016-03-28 19:49:52

标签: mysql

我有一个唯一的密钥标签和一个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 ; 

1 个答案:

答案 0 :(得分:0)

这是由InnoDB引擎内置的执行顺序引起的“正常”行为。可以通过这种方式实现,以加快执行速度。使用自动增量时,存在某种模型,用于存储表的下一个可用索引(id)。因此,插入带有insert clause引擎的项目首先会询问该模型中的下一个可用索引(id),这也会增加该值,以便为下一个想要下一个id的人做好准备。因此,当以这种方式实现时,模型不关心insert子句执行是否成功。