问题标签 [cascading-deletes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - NHibernate 多对多关系 - 删除部分关系时的问题
我在团队和员工实体之间有多对多的关系。
我将它们映射如下:
然后我创建了 3 个团队和 2 个员工:
Employee1 还有 2 个 LoanedItems(书籍、杂志)。Employee2 没有 LoanedItems。
现在我想删除 Team1 和 Team3 中的 Employee1。在 Team 1 中也是 Employee2。因此,当我删除 Employee1 时,我假设 Employee1 和 Team3 也被删除,因为我还假设一个 Team 只有在有 Employe 时才能存在,反之亦然。所以Team1可能不会被删除,因为它有Employee2并且可以仍然存在。
我在新会话中使用了以下代码行:
但是会发生什么?-> NHibernate 删除所有团队和所有员工!-> NHibernate 通过将 FK EmployeeID 设置为 NULL 正确更新了我的 LoanedItem 表。
那里有什么问题?
mysql - [MySQL]:从两个依赖表中删除行
我正在尝试根据第三个表 ID 删除两个从属表中的所有行。
表结构:
我想从交易/购买中删除与项目中的 Client_ID 匹配的所有行。听起来很简单......即使我可以将我的新手头脑包裹起来......
没有...
我收到此错误foreign key constraint fails...
- 我相信你们中的许多人并不感到惊讶。
购买使用 t.Transaction_ID 的问题是什么?- (因此,这个外键会失败)
或者此表中可能还有其他 t.Transaction_ID 相关数据(我还没有找到)。
编辑:COMPLETE ERROR
iphone - iPhone Core Data:跨多对一关系的级联删除
我有两个类 A 和 B,从 A 到 B 具有多对一的关系(多个 A 对象可能引用同一个 B)。问题是,如果A端的删除规则是Cascade,那么B只有在最后一个引用A被删除时才会被删除,还是在关联的A第一次被删除时才被删除。如果重要,关系 B 方的删除规则是 Nullify。
此外,我在 Core Data 文档中读到 Optional 标志在某些情况下很重要。但不清楚他们所说明的关系与我的案件有何关系。他们在谈论一个遏制案例(B 归 A 所有),而我的案例是订阅/关联之一(B 与 A 有关)。
我可以简单地在代码中以编程方式管理删除,但如果可能的话,我希望允许 Core Data 做正确的事情。但目前尚不清楚我正在寻找的垃圾收集语义是否在 Core Data 中得到支持。
有什么建议么?
nhibernate - 删除具有关联子记录的父记录时,Nhibernate 中的意外行数
我有一个父表 Orders 和一个子表 [Order Details],我已将流利的映射设置为 -
(在父 Order 类中)
(在子 [订单详情] 类中)
我试图通过调用来删除父对象 -
这仅在只有一个子记录时才有效,如果有多个子记录,则子记录将被删除,但父记录不会!我得到了可怕的 - 意外的行数错误。
我确信这是我正在做的愚蠢的事情,但是通过网络拖网并没有发现任何东西。
谢谢
nhibernate - 如何查找是否可以删除引用的对象?
我有一个名为“客户”的对象,它将在其他表中用作外键。
问题是我想知道是否可以删除“客户”(即,它没有在任何其他表中被引用)。
Nhibernate可以做到这一点吗?
sql - 如何从具有外键的三个表中删除?
我希望能够选择一个 groupID 并通过在 MS SQL 服务器数据库中找到的三个表进行级联删除。这些表如下所示:
我在想,既然我知道 groupID,我可能会根据 groupID 从映射表中选择 memberID 并从 member 表中删除它们,但我通常会遇到以下错误:
“DELETE 语句与 REFERENCE 约束冲突...[表中的 FK 约束]”。
谁能给我一些关于同时从所有这三个表中删除的最佳方法的指导?
谢谢。
c# - nhibernate 不会级联删除子级
场景如下,
我有 3 个名为Parent 的对象(我简化了名称),父母的孩子和孩子的孩子
父母的孩子是父母的集合,孩子的孩子是孩子的集合。
映射如下(相关部分)
父母
父母的孩子
我想要实现的是,当我删除父级时,会一直级联删除到孩子的孩子。但目前发生的事情是这样的。
(这纯粹是为了映射测试目的)获取父实体(工作正常)
现在删除部分
在通过级联和反转解决了“无法插入空值”错误后,我希望现在可以使用此代码删除所有内容,但只有父级被删除。
我是否错过了我的映射中可能会错过的某些内容?任何正确方向的提示都非常受欢迎!
迭戈,谢谢你的中肯回答。(和解释)
我删除了on-delete="cascade"
,这是因为我喜欢在代码中而不是在数据库中尽可能多地进行控制。
下面发布的代码是(工作)结果。
父母
父母的孩子
希望这可以帮助有同样问题的人!
sql - SQL Sever 2008 中的级联删除不起作用
我有下表设置。
BagCommentRelation 具有 Bag 和 BagComment 的外键。
所以,我为这两个外键打开了级联删除,但是当我删除一个包时,它不会删除评论行。
是否需要为此触发触发器?还是我错过了什么?
(我使用的是 SQL Server 2008)
注意:发布请求的 SQL。这是 BagCommentRelation 表的定义。(我的 bagID 类型错误(我认为它是一个 guid,但它是一个 int)。)
此表中的行会删除,但注释表中的行不会。
django - 覆盖 Django 的级联删除行为的选项有哪些?
Django 模型通常可以很好地处理 ON DELETE CASCADE 行为(以一种适用于本机不支持它的数据库的方式。)
但是,我正在努力发现在不合适的情况下覆盖此行为的最佳方法是什么,例如在以下情况下:
ON DELETE RESTRICT(即如果对象有子记录,则防止删除该对象)
ON DELETE SET NULL(即不删除子记录,而是将其父键设置为 NULL 以破坏关系)
删除记录时更新其他相关数据(例如删除上传的图像文件)
以下是我所知道的实现这些目标的潜在方法:
覆盖模型的
delete()
方法。虽然这种方法有效,但当通过QuerySet
. 此外,每个模型都delete()
必须被覆盖以确保 Django 的代码永远不会被调用并且super()
不能被调用,因为它可能使用 aQuerySet
来删除子对象。使用信号。这似乎是理想的,因为它们在直接删除模型或通过 QuerySet 删除时被调用。但是,无法阻止删除子对象,因此无法实现 ON CASCADE RESTRICT 或 SET NULL。
使用能够正确处理此问题的数据库引擎(在这种情况下 Django 会做什么?)
等到 Django 支持它(并在此之前与错误一起生活......)
似乎第一个选项是唯一可行的选项,但它很丑陋,会把婴儿和洗澡水一起扔出去,并且在添加新模型/关系时可能会丢失一些东西。
我错过了什么吗?有什么建议吗?
c# - 实体框架级联删除问题 - 外键设置为 null
我有以下使用实体框架映射的模型:Mitglied -> Auftrag -> Teilprojekt
我已经使用外键和“删除级联”在数据库中设置了所有内容。如果我对数据库执行一些测试,一切正常。当我使用实体框架添加和删除对象时,问题就出现了。考虑以下代码:
这会正确添加所有对象并设置外键。如果我然后执行以下代码来删除 Auftraege:
正确删除了两个 Auftraege a1 和 a2;Teilprojekt t1 也被删除,但 Teilprojekt t2 没有被删除;
它的 AuftragID 列设置为 NULL!
唯一的区别是,对于 a1,我没有加载 Teilprojekte,而对于 a2,我确实加载了它们。我不明白为什么这不能正常工作。同样在 SSDL 中,一切都设置正确:
如果我将 Teilprojekte 表上的 AuftragsID 设置为不为空,那么我会从实体框架中收到以下错误:
谁能帮助我并告诉我出了什么问题以及如何解决这个问题?谢谢