2010-01-24 272 views
0

我已經在表中設置了外鍵完整性。但我能夠刪除主表中的數據,這是子表中的參考。 會出現什麼問題 實際上,它應該說刪除錯誤就像所有引用的表數據必須被刪除。mysql外鍵約束

+2

? 「對於除InnoDB以外的存儲引擎,MySQL服務器會分析CREATE TABLE語句中的FOREIGN KEY語法,但不會使用或存儲它。」 (MySQL參考手冊http://dev.mysql.com/doc/refman/5.1/en/ansi-diff-foreign-keys.html) – 2010-01-24 15:57:52

+0

storge引擎是ENGINE = MyISAM – ASD 2010-01-24 16:01:37

回答

1

你指定ON DELETE CASCADE?當你創建你的FK?不知道您正在使用的發動機無論是

例如

CREATE TABLE parent (id INT NOT NULL, 
        PRIMARY KEY (id) 
) ENGINE=INNODB; 
CREATE TABLE child (id INT, parent_id INT, 
        INDEX par_ind (parent_id), 
        FOREIGN KEY (parent_id) REFERENCES parent(id) 
         ON DELETE CASCADE 
) ENGINE=INNODB; 

這裏更多http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html您正在使用哪個存儲引擎

+0

這兩個表必須是InnoDB表,並且innodb的性能不及myisam – 2010-01-24 16:02:06

+0

其實我已經創建了表格,現在我有數據了。 您是否意味着我需要重新創建所有設置外鍵的表。 – ASD 2010-01-24 16:02:44

+0

外鍵約束在那裏。除非存儲引擎設置爲InnoDB,否則MySQL不會強制執行它們。您可以執行「ALTER TABLE [table name] ENGINE = InnoDB」(http://dev.mysql.com/doc/refman/5.1/en/alter-table.html),而不是重新創建表。 – 2010-01-24 16:12:47