MySQL InnoDB:自动递增非主键
在 MySQL InnoDB 中,可以自动递增非主键列,但这样做一般不会推荐。
问题:
是否可以自动递增非主键,特别是 book_comments 表中的 comment_id 列?
替代方案:
提问者建议两个使用自动递增非主键的替代方案:
但是,这些替代方案都有缺点,例如增加不必要的索引开销或显着增加表大小。
答案:
是的,可以通过在该列上创建索引来自动递增非主键。以下示例创建一个带有自动递增 testInc 列的表:
<code class="sql">CREATE TABLE `test` ( `testID` int(11) NOT NULL, `string` varchar(45) DEFAULT NULL, `testInc` int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`testID`), KEY `testInc` (`testInc`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;</code>
但是,专家强烈建议不要这种做法。更合适的方法是将 comment_id 作为主键,并通过 (book_id、timestamp、user_id) 上的唯一索引来强制完整性。这种方法为表提供了合适的主键,并遵循最小惊讶原则。
以上是MySQL InnoDB 可以实现非主键自增吗?的详细内容。更多信息请关注PHP中文网其他相关文章!