mysql - MariaDB 在没有外键关系的行上删除 CASCADE
问题描述
我有一个问题,在过去的几天里我一直在头疼。我有一个关系数据库(mariaDB),它有两个表。表A和表B。表A和自己有关系,当删除一行时,可能会删除多个(通过on delete CASCADE)。表 B 与表 A 没有关系。我无法创建关系,因为表中当前存在的行可能有也可能没有正确的(强制这种关系)数据(我对此没有影响)。
当我从表 A 中删除一条记录时,我希望表 B 中的隐式相关数据也被删除。由于无法创建外键,因此删除 CASCADE 似乎是不可能的。我想到了一个触发器,它会在表 A 中的每次删除时找到相关行,但是,触发器不会在由 on delete CASCADE 删除的行上触发。这意味着当 X 行(来自表 A)由于 CASCADE 被删除时,表 B 中的相关数据将不会被删除。
如果我不得不将其总结为一个问题:是否可以在不使用外键或触发器的情况下删除一行,例如在删除 CASCADE 时?
感谢阅读,不胜感激!
解决方案
感谢@Akina。
迭代与触发器中删除的行相关的行,然后删除与表 B 中这些行相关的所有行。这可行,但我目前还不能接受我自己的答案。
推荐阅读
- c++ - 函数模板和模糊模板参数
- angular - 如何使用 Heroku 上托管的 Angular App 修复 CORS?
- c++ - 如何确保在 qt 进程中实际完成 mount 命令
- html - 如何在使文本 100% 可见的同时降低背景图像的不透明度?
- angular - 当我刷新页面时,我返回主页
- swift - 如何使用 Metal Framework 在 iOS Swift 中绘制文本
- jquery - 如何选择具有特定类且以类结尾的元素?
- php - 使用队列生成 pdf 有时会显示旧设计,有时会显示新设计
- mongodb - 数据库中不那么紧急的字段我应该填写什么?
- mysql - mariadb-server 已被 mysql-community-server 淘汰