在MySQL的InnoDB存储引擎中,主键通常是自动递增的。但是,也可以自动递增非主键。
数据库模式包括两个表:“book_comments”和“book_comments_votes”。 “book_comments”表有一个非主键列“comment_id”,需要自动递增以与“book_comments_votes”表保持一致,该表包含对“comment_id”的引用作为其主键。
要自动递增非主键,必须将其声明为索引。这是一个例子:
CREATE TABLE `book_comments` (
`book_id` MEDIUMINT NOT NULL,
`timestamp` MEDIUMINT NOT NULL,
`user_id` MEDIUMINT NOT NULL,
`vote_up` SMALLINT,
`vote_down` SMALLINT,
`comment` TEXT,
`comment_id` MEDIUMINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`book_id`, `timestamp`, `user_id`),
KEY `comment_id` (`comment_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
虽然在非主键上创建简单索引是最直接的解决方案,但存在一些替代方案:
但是,推荐的解决方案仍然是在非主键上创建唯一索引,并避免替代方案的缺点。这种方法提供了简单性和完整性,而不牺牲性能或数据存储效率。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3