Mysql 用外键删除其他数据
我正在申请实习。我们在休息时间玩游戏,我正在申请跟踪分数 我可以添加玩家游戏。之后,我可以编辑游戏并指定赢家。 游戏桌和赢家桌是分开的Mysql 用外键删除其他数据,mysql,sql,join,phpmyadmin,sql-delete,Mysql,Sql,Join,Phpmyadmin,Sql Delete,我正在申请实习。我们在休息时间玩游戏,我正在申请跟踪分数 我可以添加玩家游戏。之后,我可以编辑游戏并指定赢家。 游戏桌和赢家桌是分开的 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. 如果我在游戏中
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.
如果我在游戏中没有指定赢家,我可以安全地删除一条记录。但是,如果我指定了一个获胜者,我不能:不能删除或更新父行:外键约束失败
我知道为什么,因为胜利者与一场比赛有关。但是如何删除游戏并立即从另一个表中删除赢家?首先从
赢家中删除外键约束:
ALTER TABLE winners DROP FOREIGN KEY yourforeignkeyname
然后使用以下命令重新创建它:
现在,当您删除游戏时,赢家行也将被删除。为一个表工作。其他两个表出现错误:(Errcode:121“写入或更新时重复键”)还有哪些表?此代码会影响winners
表。我知道。我有三张桌子,我简化了我说的话。我有国际足联冠军、飞镖冠军和台球冠军。与国际足联游戏、飞镖游戏和台球游戏相关。它只适用于省道,而不适用于其他省道。您必须对所有省道执行相同的操作,但在重新创建省道时为每个约束指定不同的名称。
ALTER TABLE winners
ADD CONSTRAINT yourforeignkeyname
FOREIGN KEY (ID)
REFERENCES games(ID)
ON DELETE CASCADE;