2014-11-06 78 views
0

我不知道我在做什麼錯誤,因爲我一直在關注此網站上的以前的回答,涉及ON CASCADE DELETE級聯刪除似乎不適用於我的數據庫

基本上,這是我的表:

CREATE TABLE `directorycolumntags` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `directorycolumn_id` INT(11) NOT NULL, 
    `tag_id` INT(11) NOT NULL, 
    `description` TEXT, 
    `created` DATETIME DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    FOREIGN KEY (`directorycolumn_id`) REFERENCES directorycolumn(id), 
    CONSTRAINT FOREIGN KEY (`tag_id`) REFERENCES tag(id) 
    ON DELETE CASCADE 
) ENGINE=MYISAM AUTO_INCREMENT=29 DEFAULT CHARSET=utf8; 

Foreign key引用變量表的id:現在

CREATE TABLE `tag` (
    `id` INT(11) NOT NULL AUTO_INCREMENT, 
    `name` VARCHAR(200) DEFAULT NULL, 
    `description` TEXT, 
    PRIMARY KEY (`id`) 
) ENGINE=INNODB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8; 

,如果我執行這個queryINSERT一些數據到directorycolumntags表它作品:

INSERT INTO directorycolumntags(directorycolumn_i d,tag_id)VALUES(178,32);

但是,當我從標記表中輸入id爲32時,它不會從directorycolumntags表中刪除該行。任何人都可以指出我要去哪裏嗎?

回答

2

這是因爲您的表directorycolumntagsMYISAM而不是INNODB。 MyISAM不支持外鍵。你可以編寫你的外鍵語句,但是MySQL默默地忽略它們。

試試這個:

ALTER TABLE `directorycolumntags` ENGINE = 'InnoDB';