使用外键删除其他数据
Delete other data with foreign key
我正在申请实习。我们在休息时间玩游戏,我正在申请跟踪比分。
我可以添加玩家游戏。之后,我可以编辑游戏并指定获胜者。
比赛 table 和获胜者 table 都是分开的。
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.
如果我还没有在游戏中分配获胜者,我可以安全地删除一条记录。但是,如果我分配了获胜者,我不能:无法删除或更新父行:外键约束失败
我知道为什么,因为获胜者与游戏有关。但是我怎样才能删除一个游戏并立即从另一个游戏中删除获胜者table?
首先从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;
现在当您删除游戏时,获胜行也会被删除。
我正在申请实习。我们在休息时间玩游戏,我正在申请跟踪比分。
我可以添加玩家游戏。之后,我可以编辑游戏并指定获胜者。 比赛 table 和获胜者 table 都是分开的。
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.
如果我还没有在游戏中分配获胜者,我可以安全地删除一条记录。但是,如果我分配了获胜者,我不能:无法删除或更新父行:外键约束失败
我知道为什么,因为获胜者与游戏有关。但是我怎样才能删除一个游戏并立即从另一个游戏中删除获胜者table?
首先从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;
现在当您删除游戏时,获胜行也会被删除。