在 MySQL 的 InnoDB 存储引擎中,主键通常是自动递增的。但是,也可以自动递增非主键。
数据库模式包括两个表:“book_comments”和“book_comments_votes”。 “book_comments”表有一个非主键列“comment_id”,需要自动递增以与“book_comments_votes”表保持一致,其中包含对“comment_id”的引用作为其主键。
要自动递增非主键,必须将其声明为索引。这是一个示例:
<code class="mysql">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;</code>
虽然在非主键上创建简单索引是最直接的解决方案,但存在一些替代方案:
但是,推荐的解决方案仍然是在非主键上创建唯一索引,并避免替代方案的缺点。这种方法既简单又完整,且不会牺牲性能或数据存储效率。
以上是MySQL InnoDB 可以自动递增非主键吗?的详细内容。更多信息请关注PHP中文网其他相关文章!