在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