以下創建表 sql 代碼未產生預期結果。
CREATE TABLE mentorships (
mentor_ID INT NOT NULL,
mentee_ID INT NOT NULL,
status VARCHAR(255) NOT NULL,
project VARCHAR(255) NOT NULL,
PRIMARY KEY (mentor_ID, mentee_ID, project),
CONSTRAINT fk1 FOREIGN KEY(mentor_ID) REFERENCES co_employees(id) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT fk2 FOREIGN KEY(mentee_ID) REFERENCES co_employees(id) ON DELETE CASCADE ON UPDATE RESTRICT,
CONSTRAINT mm_constraint UNIQUE(mentor_ID, mentee_ID));
運行代碼后,當我在 phpmyadmin 中檢查新表的索引時,我希望看到 fk1 以及下面螢屏截圖中列出的其他索引。但正如您在螢屏截圖中看到的,沒有顯示 fk1 索引。

關于為什么 fk1 索引沒有顯示或為什么沒有創建它的任何想法?
uj5u.com熱心網友回復:
為了澄清上述評論中的觀點,以下是手冊中的內容:
https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
在參考表中,必須有一個索引,其中外鍵列按相同順序列為第一列。如果參考表不存在,則會自動在參考表上創建此類索引。
(強調我的)
在您的情況下,“參考表”是您mentorships在其中定義外鍵的表。
手冊中的這一陳述與 Jon Armstrong 的觀點一致:主鍵滿足外鍵的索引要求,mentor_id因為這是主鍵索引中的第一列。但它不滿足外鍵的索引,mentee_id因為那不是第一列。因此它只需要為mentee_id.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524719.html
