2014-11-06 75 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';