问题标签 [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.
entity-framework - 您如何确保首先在 EF 代码中对表关系启用级联删除?
我想使用代码优先在表上启用 CASCADE DELETE。从头开始重新创建模型时,即使自动设置了关系,也没有设置 CASCADE DELETE。奇怪的是,它确实为某些具有多对多关系的表启用了此功能,您会认为它可能存在问题。
设置: 表 A <- 表 B。
表 B 的 FK 指向表 A 的 PK。
为什么这行不通?
grails - 当belongsTo指定多个类时,Grails belongsTo 级联删除?
我的问题是:如果我创建一个 Dog 实例 D、一个 Owner 实例 O、一个 Sitter 实例 S 并将 D 与 O 和 S 相关联,当 S 被删除时 O 会发生什么?O还会有D吗?因为它是级联删除,所以 S 和 D 都会被删除,对吧?O什么时候会发生什么?还会有D吗?
sql - 外键在同一张表时如何在oracle中添加级联删除
我有一个包含 oracle 中的树的表。
当树的根没有父级时,如何添加级联删除?
现在,根的父 ID 设置为 -1。当我尝试这个时,我收到以下错误:
grails - 如何防止双向关联的级联删除?
我想知道是否可以在没有级联删除的情况下以双向 1:N 关联删除父对象。根据
http://grails.org/doc/1.0.x/guide/5.%20Object%20Relational%20Mapping%20%28GORM%29.html
...在单向关系中,父端映射为“保存更新”,子端映射为“无”。我已经为双向关系尝试了这些设置,但并不奇怪它不起作用。具体来说:
这是项目类:
如果有解决方案,我宁愿不重新设计我的应用程序(通过从 Project 类中删除“belongsTo”):两端的导航访问非常方便,并且我在项目端没有太多实例。
另外,如果有办法实现这一点,那么知道这些活动映射之后会发生什么会很有趣,我可以将它们(或将它们设置)设置为“null”吗?
感谢有关此问题的任何意见。
sql - SQL '删除级联'
我有一个表 B,它有一个表 A 的外键,现在我想在 A 上做一个“DELETE CASCADE”的事情,但 PostgreSQL 不接受以下内容:
似乎只有 SELECT 可以在IN ()
子句内。我想有一些简单的(和标准的 SQL,不是特定于 PostgreSQL 的?)的方法吗?
编辑:当您遇到此类问题时,是否可以肯定地说某些东西的结构很糟糕?在我们的例子中,我有一种直觉认为..[expr]..
应该在一个新的 CTAable 中而不是作为 ATable 中的一个子集,但我不能真正指出任何设计范式来支持这一点。
java - 休眠级联删除未按预期工作
我正在使用休眠 3 并尝试删除数据库中的记录,但删除没有像我预期的那样工作。模式休眠正在处理(在伪代码中):
我的休眠类映射看起来像:
现在有了这个配置,我正在调用:
正在发生的是:
并引发异常。session.remove(..) 调用的结果是我期望删除的雇主记录,以及与雇主关联的所有员工记录和与已删除员工记录关联的所有 EmployeeRole 记录。这是一个正确的假设吗?还是我在这里误解了一个关键概念?
sql - SQL表数据结构,这是错的吗?使用级联删除
以下是我遇到问题的 3 个表:
表:机会 - 拥有各种机会(工作)描述
表:Opportunities_Applicants - 持有各种申请机会的申请人。1个申请人只能申请1个机会,但是1个机会可以有多个申请人
表:Opportunities_Category - 保存类别名称和类型。1 类别可能与许多机会相关。
我正在尝试在删除机会类别时执行级联删除,它将删除相应的机会和这些机会的申请人。
这种结构合适还是我应该以不同的方式设置数据库?应该如何设置我的表关系,以便在删除商机类别时使 CASCADING Delete 起作用?
我什至应该使用 CASCADING Delete 吗?
sql - 我应该让 JPA 还是数据库级联删除?
假设我们有两个实体,A 和 B。B 与 A 具有多对一的关系,如下所示:
现在,我想删除该A
对象并将删除级联到它的所有 children B
。有两种方法可以做到这一点:
添加
cascade=CascadeType.ALL, orphanRemoval=true
到 OneToMany 注释,让 JPA 在从数据库中删除 A 对象之前删除所有子项。让类保持原样,让数据库级联删除。
使用后一个选项有什么问题吗?它会导致实体管理器保留对已删除对象的引用吗?我选择选项二而不是选项一的原因是选项一生成 n+1 个 SQL 查询以进行删除,当对象 A 包含很多子项时,这可能需要很长时间,而选项二仅生成一个 SQL 查询然后继续高兴地。有没有关于这个的“最佳实践”?
jpa-2.0 - 删除子项时 JPA 关系未更新
鉴于以下情况:
换句话说:对象 A 和对象 C 都包含许多 B 对象。
当我删除一个 C 对象(从技术上讲,我正在更新一个包含多个 C 对象并使用孤儿删除的对象)时,我希望删除所有引用的 B 对象,这与当前注释一样工作。但是,实体管理器似乎不理解位于其缓存中的对象 A 现在失去了一些孩子。如果我有一个 A 的实例,我当然必须手动更新它的 bList,或者做一个新的查询来更新它,但即使是新获取的 A 对象仍然是过时的。重申:
- C 对象被删除。
- 使用 orphanRemoval 将移除级联到 B 对象。
- 实体管理器中缓存的 A 对象中的 bList未更新。
- 手动清除实体管理器缓存使其检索正确更新的对象。
如何解决?我希望实体管理器自动更新其持久性上下文,或者在@JoinColumn 上提供级联注释,但这里似乎都不是这种情况。
编辑:似乎问题在于对象 A 的 bList 更新时对象 C 的 bList 没有得到更新(因此不能级联更改)。我不知道为什么.. 仍然注意我在谈论持久性上下文而不是实例化对象。
c# - nhibernate "cascade="all-delete-orphan" 错误
我的数据库中有 3 个表:
- 项目 (ID,名称)
- 标签(ID,名称)
- ProjectsTagss (id, projectId, tagid)
如您所见,ProjectsTags 表是一个桥接表
这是我流利的 nhibernate 映射
项目地图.cs:
项目TagsMap.cs:
标签映射.cs:
如您所见,我在历史上没有将 Tag 表链接到其他任何内容。我现在需要生成一个报告来显示标签以及该标签的使用频率,因此我需要从标签加入到 ProjectsTag。我尝试将此行添加到标签映射中:
但是当我去更新标签对象上的名称并提交时,我收到了这个错误:
拥有的实体实例不再引用具有 cascade="all-delete-orphan" 的集合
当我简单地更新标签表时,任何人都可以看到我添加的内容有什么问题会导致这个休眠异常。同样,我的目标是能够执行以下操作:
以下是根据要求的一些附加代码:
我的标签类: