首页 > 解决方案 > 用外键删除其他数据

问题描述

我正在申请实习。我们在休息时间玩游戏,我正在制作一个应用程序来跟踪分数。

我可以与玩家一起添加游戏。之后,我可以编辑游戏并指定获胜者。游戏桌和获胜者桌都是分开的。

Players: ID(PK), name
Games: ID(PK), player_1(FK), player_2(FK) --- Connected to players.id
Winners: ID(FK), name (FK) --- winners.id connected to games.id, name to players.

如果我没有在游戏中指定获胜者,我可以安全地删除记录。但是,如果我分配了获胜者,我不能:无法删除或更新父行:外键约束失败

我知道为什么,因为获胜者与游戏有关。但是我怎样才能删除一个游戏并立即从另一张桌子上删除获胜者呢?

标签: mysqlsqljoinphpmyadminsql-delete

解决方案


首先删除外键约束winners

ALTER TABLE winners DROP FOREIGN KEY yourforeignkeyname

然后使用ON DELETE CASCADE重新创建它:

ALTER TABLE winners 
ADD CONSTRAINT yourforeignkeyname 
FOREIGN KEY (ID) 
REFERENCES games(ID) 
ON DELETE CASCADE;

现在,当您删除游戏时,获胜者行也将被删除。


推荐阅读