在mysql中,我有两个表players
和walls
。
我用它来创建墙表:
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_id
是id
表的players
列的外键。
我想要它,以便,如果有任何行从播放器表中删除,那么wall表中除了播放器表的已删除行的外键之外的任何行也应该使用级联删除自动从墙表中删除。但是当我这样做时,wall表中的行不会被删除。
有人知道这里有什么不对吗?
由于
答案 0 :(得分:3)
确认您的表实际上使用的是支持外键的引擎,例如: InnoDB的。较旧的MySQL默认创建MyISAM表,它们理解外键定义,但完全忽略它们。
简单测试:show create table yourtable;
。如果engine=
行表示它是启用了非FK的引擎,则说明您的问题。