首頁  >  文章  >  資料庫  >  MySQL InnoDB 可以實現非主鍵自增嗎?

MySQL InnoDB 可以實現非主鍵自增嗎?

DDD
DDD原創
2024-11-01 17:16:301004瀏覽

Can I Auto-Increment a Non-Primary Key in MySQL InnoDB?

MySQL InnoDB:自動遞增非主鍵

在 MySQL InnoDB 中,可以自動遞增非主鍵列,但一般不建議這樣做。

問題:

是否可以自動遞增非主鍵,特別是book_comments 中的comment_id 欄位

替代方案:。 🎜>

提問者提出了使用自動遞增非主鍵的兩種替代方案:

    將comment_id 設為主鍵並通過(book_id、時間戳、user_id)上的唯一索引強製完整性
  • 保留現有主鍵並將comment_id 替換為book_comments_votes 表中的整個主鍵
但是,這些替代方案都有缺點,例如增加不必要的索引開銷或顯著增加表大小。

答案:

是的,可以自動遞增非主表key 透過在該列上建立索引來實現。以下範例建立一個有自動遞增 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn