在 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
列是 players
表的 id
列的外键。
我想要这样,如果从玩家表中删除了任何行,那么 walls 表中具有外键到玩家表已删除行的任何行也应该使用级联删除自动从 walls 表中删除。但是当我这样做时,walls 表中的行不会被删除。
有人知道这里出了什么问题吗?
谢谢
最佳答案
确认您的表实际上使用了支持外键的引擎,例如创新数据库。较旧的 MySQL 将默认创建 MyISAM 表,它理解外键定义,但完全忽略它们。
简单测试:show create table yourtable;
。如果 engine=
行表明它是一个不支持 FK 的引擎,那就是你的问题。
关于Mysql级联删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23371159/