首頁  >  文章  >  資料庫  >  MySQL InnoDB如何實現非主鍵自增?

MySQL InnoDB如何實現非主鍵自增?

Barbara Streisand
Barbara Streisand原創
2024-10-30 01:47:29852瀏覽

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