2015-10-05 90 views
0

我已經有兩個表(書和作者)。兩個表都已經填滿了。在書籍表中是列author_id指向作者。沒有外鍵約束。我想使用此查詢添加外鍵約束:在mysql中向列添加外鍵不會創建一個

ALTER TABLE Book 
ADD CONSTRAINT fk_book$author 
FOREIGN KEY (author_id) 
REFERENCES Author(author_id) 

這將返回我這樣的結果: MySQL返回的查詢結果爲空(即零行)。

我查看了信息模式DB的約束表,但沒有看到有關外鍵的任何新記錄。所以我猜沒有什麼事

表書有60000多條記錄。

是否有任何限制,我不能在具有多於xyzvw記錄的表中使用「外鍵」更改表? 我在做什麼錯?

我正在運行MySQL版本5.6.17。

+1

你使用什麼表引擎,innodb或myisam(或特殊的東西)?如果它已更新,是否檢查了書籍表的create table語句(show create table ...)? – Shadow

+0

這將是一個好主意,顯示問題 – RiggsFolly

+0

我使用myisam的2個表的架構。該引擎不支持外鍵。 – mark

回答

1

請檢查下面點 -

  1. 表引擎應該是InnoDB。
  2. 列屬性(數據類型,長度等)應該與父/子兩個表中的鏈接列相同。
  3. 引用列應在父表中編入索引。
  4. 如果表已經有數據,那麼引用列中的每個子值也應該存在於父表中。

如果以上所有點都沒有問題,那麼就分享由mysql引發的錯誤細節。

+0

謝謝你回答Zafir。我發現我使用myisam,並且此引擎不支持外鍵。因此它不起作用。 – mark