我有一个父表,其中有十几个子表引用它。这些子表又具有引用它们的其他子表。等等。
我需要从主父表中删除一行,将其一直向下级联。
在所有地方删除/重新创建约束以使它们“在级联删除”不是一种选择
遍历所有这些并手动删除子行是一场噩梦。
还有其他选择吗?
DELETE 语句没有使其级联的参数。
因此,您既可以使用户成为用户,也可以ON CASCADE DELETE
按正确的顺序执行一系列单独的删除。
您可以编写一个“智能删除”过程来调查表结构并在此基础上生成一系列删除,但这可能比编写单独的删除更工作,更像是一场噩梦。而且你必须有这些限制才能工作,这实际上并不总是需要的。
我在 oracle 中解决了这种问题,我故意将数据从一个分支合并到另一个分支 - 目标,然后删除源分支。
https://sites.google.com/site/keytreechanger/Home https://sites.google.com/site/keytreechanger/Home/screenshots
引用
鉴于此错误,例如:客户端 Pedrus Root(内部密钥表示 #R=111)与 Petrus Root (#R=222) 相同。将222下的数据移动到111,然后删除222分支。
KTC 以一种巧妙的方式从数据库的所有相关表中收集与此案例(以及接下来要解决的几个案例)相关的所有数据。
该算法仅在需要的地方搜索并使用所有可用的关键组件。
出于审计目的,所有数据的备份都在本地维护。本地存储库透明地发展以适应表/字段定义的变化。高级用户可以直观地检查表/关系树,并且可以查看/打印/编辑任何表中的数据,并可以选择修改假定的操作(剪切、剪切和粘贴或完成)。
最后,KTC 生成数百行插入、更新和删除的纠正代码来解决这个特殊情况,以合适的顺序列出,以
delete from rootTable 结尾,其中#R=222。
然后,我将代码应用于在线用户。
在您的情况下,过滤器必须删除除删除行之外的所有行。
AFAIK 市场上没有等效的应用程序。