2012-05-30 26 views
0

對於mysql而言並且已經被許多人告知,在mysql中創建外鍵是不必要的?表格關係將如何保持一致,並且級聯將如何完成?我在哪裏可以找到有關在我的MySQL表上創建了哪些外鍵的信息? desc table_name或show create table_name沒有給出任何信息....我無法看到我的mysql數據庫中的任何表的外鍵

回答

2

MySQL中的外鍵僅適用於InnoDB表。他們出現在SHOW CREATE TABLE。您可能實際上沒有定義外鍵,因爲MySQL 默默忽略了column type REFERENCES othertable(column)語法;只有單獨的FOREIGN KEY (column) REFERENCES othertable(column)外鍵定義在CREATE TABLE中有效。

相關閱讀:CREATE TABLE in MySQL docs(搜索「在線引用規範」)

+0

非常感謝,不明白「的MySQL自動忽略列類型引用othertable(列)語法;只有獨立的外鍵(列)othertable參考(列)外鍵定義在CREATE TABLE中有效「...如果在mysql中沒有創建外鍵的效果,跨表將如何維護級聯,例如,如果記錄被刪除或插入新記錄將如何存在檢查是否輸入了無效的值.... – ratsy

+0

有兩種方法可以在CREATE TABLE語句中定義外鍵:在列規範本身(_inline_)中,以及作爲單獨的'FOREIGN KEY'定義。兩者都被接受(不會導致任何錯誤),但內聯定義被忽略,因此您必須使用單獨的FOREIGN KEY定義,或者您必須在創建表之後添加外鍵。 – lanzz

+0

謝謝,我知道如何創建外鍵......那麼你是說如果使用內聯規範在表上創建外鍵,我們將無法看到後面在此表上創建了外鍵?另外,請告訴我爲什麼外鍵在mysql中不重要....再次感謝! – ratsy

相關問題