Mysql级联删除无法正常工作

时间:2014-04-29 17:16:07

标签: mysql

在mysql中,我有两个表playerswalls

我用它来创建墙表:

CREATE TABLE walls (id int AUTO_INCREMENT, player_id int, x int, y int, PRIMARY KEY(id), FOREIGN KEY (player_id) REFERENCES players(id) ON DELETE CASCADE);

alter table walls add unique index(x, y);

player_idid表的players列的外键。 我想要它,以便,如果有任何行从播放器表中删除,那么wall表中除了播放器表的已删除行的外键之外的任何行也应该使用级联删除自动从墙表中删除。但是当我这样做时,wall表中的行不会被删除。

有人知道这里有什么不对吗?

由于

1 个答案:

答案 0 :(得分:3)

确认您的表实际上使用的是支持外键的引擎,例如: InnoDB的。较旧的MySQL默认创建MyISAM表,它们理解外键定义,但完全忽略它们。

简单测试:show create table yourtable;。如果engine=行表示它是启用了非FK的引擎,则说明您的问题。