mysql - 用外键删除其他数据
问题描述
我正在申请实习。我们在休息时间玩游戏,我正在制作一个应用程序来跟踪分数。
我可以与玩家一起添加游戏。之后,我可以编辑游戏并指定获胜者。游戏桌和获胜者桌都是分开的。
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.
如果我没有在游戏中指定获胜者,我可以安全地删除记录。但是,如果我分配了获胜者,我不能:无法删除或更新父行:外键约束失败
我知道为什么,因为获胜者与游戏有关。但是我怎样才能删除一个游戏并立即从另一张桌子上删除获胜者呢?
解决方案
首先删除外键约束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;
现在,当您删除游戏时,获胜者行也将被删除。
推荐阅读
- java - 当列表和元素具有相同名称时解组列表
- django - 调用 apply_async 时,Celery 不会返回或失败。与 celery_beat 一起使用
- typescript - 我们如何在打字稿中获得嵌套对象类型
- sql - 检查域是否在 SQL Server 中设置了 mx 记录
- linux - 如何调整 /dev/shm 的大小?
- mysql - 带有内部连接的mysql查询中的if语句
- emacs - 是否可以让 emacs verilog-auto 连接在 AUTO_TEMPLATE 中模板化的电线
- applescript - 选择安全和隐私中的项目
- c++ - 如何在 C++ 中更改 LPCTSTR 对象?
- c# - 模拟单元测试的 ScrapySharp 响应