Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用外键删除其他数据_Mysql_Sql_Join_Phpmyadmin_Sql Delete - Fatal编程技术网

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;