在 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中文網其他相關文章!