首页  >  文章  >  数据库  >  MySQL InnoDB如何实现非主键自增?

MySQL InnoDB如何实现非主键自增?

Barbara Streisand
Barbara Streisand原创
2024-10-30 01:47:29849浏览

How to Auto-Increment Non-Primary Keys in MySQL InnoDB?

MySQL InnoDB:自动递增非主键

MySQL 的 InnoDB 存储引擎允许主键的值自动递增。但是,不直接支持自动递增非主键。

具体问题:表结构

考虑“book_comments”的以下表结构:

book_id     medium_int
timestamp   medium_int
user_id     medium_int
vote_up     small_int
vote_down   small_int
comment     text
comment_id  medium_int

可以自动递增非主键吗?

是的,可以自动递增非主键。不过,需要在要自增的列上创建索引。

推荐方案

尽管非主键有自增的可能性,但推荐方案解决方案是将“comment_id”作为主键,并在“book_id”、“timestamp”和“user_id”的组合上创建唯一索引,以确保数据完整性。

其他注意事项

问题中提到的替代建议有缺点:

  • 将“comment_id”作为主键并创建唯一索引:此解决方案引入了额外的索引,这可能并不理想。
  • 将“comment_id”替换为“book_comments_votes”中的主键:这会显着增加“book_comments_votes”的大小并可能影响性能。

因此,最有效、最稳健的解决方案是遵循推荐的方法,使用“comment_id”作为主键,并在“book_id”、“timestamp”和“user_id”上创建唯一索引。

以上是MySQL InnoDB如何实现非主键自增?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn