2012-06-28 56 views

回答

6

MyISAM根本不支持外鍵。從manual

對於比其他的InnoDB存儲引擎,MySQL服務器解析國外 KEY語法在CREATE TABLE語句,但不使用或存放它。 ...在稍後的階段,外鍵約束將實現 MyISAM表。

這是MySQL 5.6的下一個版本,所以它還沒有實現。文本與舊版本完全相同。

這意味着根本不使用外鍵構造。您可以在您的CREATE TABLE命令中指定它,但MySQL會默默忽略它。沒有索引將被製作出來,並且它不會被存儲(所以SHOW CREATE TABLE命令將而不是表明您嘗試創建一個外鍵)。

如果您需要外鍵支持,請考慮使用InnoDB存儲引擎。 InnoDB爲外鍵自動創建索引。

+0

所以實際上回答這個問題:如果你想要一個索引,在列上創建一個單獨的索引。 – Konerak

1

MyISAM引擎不支持外鍵,只有InnoDB引擎:

http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html

InnoDB的需要外鍵索引和參考鍵,以便 外鍵檢查可以快速且不需要表掃描。在 引用表中,必須有一個索引,其中外鍵 列作爲第一列以相同順序列出。如果它不存在 ,則會在引用表上自動創建這樣一個 索引。如果您創建 另一個可用於強制執行外鍵約束的索引,則此索引可能稍後會自動丟棄。 index_name,如果給出,則按前面所述使用。