问题标签 [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.
java - 自引用实体的删除不层叠
我有以下(简化的)休眠实体:
所以有一个包,它有一个“顶级”内容。顶部内容链接回包,级联设置为 ALL。顶部内容可能有许多“子”内容,每个子内容可能有许多自己的子内容。每个子内容都有一个父包,它可能是也可能不是与顶级内容相同的包(即内容与包的多对一关系)。
关系必须是多对一(包到内容)和多对多(内容到子内容),但对于我目前正在测试的每个子内容仅与一个包或内容相关的情况。
问题是,当我删除一个 Package 并刷新会话时,我收到一个 Hibernate 错误,指出我违反了 table 的外键约束subcontents
,其中一个特定的content_id
仍然从 table 引用subcontents
。
我已经尝试在删除包之前专门(递归地)删除内容,但我得到了同样的错误。
这个实体树没有被正确删除是有原因的吗?
编辑:阅读答案/评论后,我意识到内容不能有多个包,子内容不能有多个父内容,因此我将注释从 ManyToOne 和 ManyToMany 修改为 OneToOne 和 OneToMany。不幸的是,这并没有解决问题。
我还添加了从内容返回到父包的双向链接,这是我在简化代码中遗漏的。
sql - sql级联删除
我有一个关于级联删除和外键引用的问题:让我们假设下表:
FKID_ITEMY 上有级联删除,因此如果我删除 ITEMX 中的一行,则 ITEMY 中的相应项目将被删除。我的问题是:
ITEMX中第1行的删除会删除ITEMY中第1行吗?
还是只删除 ITEMX 中的第 1 行,因为第 2 行仍然引用 ITEMY 中的第 1 行?
换句话说,我希望在没有更多引用时删除 ITEMY 的第 1 行。级联删除会实现这一点吗?
sql - SQL Server 多级联序列
假设表 A 有两个子表 B 和 C,AB 之间有级联删除,AC 之间有级联删除。
当 A 中的一行被删除时,B 和 C 中匹配的行也将被删除。
SQL Server 如何确定触发级联的顺序?我需要的是在 AB 级联删除触发之前触发 AC 级联删除。
我知道我可以用触发器做到这一点,但我不想这样做,除非我绝对必须这样做。
hibernate - 在具有两个父类的子类上休眠 all-delete-orphan
我正在研究一个问题,其中有两个“父”类 P 和 Q 将所有删除孤儿级联到“子”类 C。我在 Hibernate 中的直觉告诉我这确实是个坏主意,我当代码删除 P 的实例(即 session.delete(myP); )时,收到一条错误消息,可能证实了这一点:
“删除的对象将被级联重新保存(从关联中删除已删除的对象):[C#1]”
当 P 的实例和 Q 的实例都可以充当同一个 C 实例的父类时,任何人都可以确认为单个子类拥有两个父类是一个坏主意吗?
谢谢!
php - 删除主行和所有子 mysql 和 php
我继承了一个 PHP 项目,客户想在他们的 CMS 中添加一些功能,基本上 CMS 允许他们创建一些新闻,所有新闻都以相同的内容开头,并且保存在一个表中,实际上是新闻标题文章保存在另一个表中,新闻的图像保存在另一个表中,基本上如果新闻的基本行被删除,我需要删除所有相关行,数据库没有设置为使用外键所以我不能使用级联删除,那么当我只有基本新闻行的 ID 时,如何删除我需要的所有内容?
任何帮助都会非常有帮助我很抱歉我不能给你更多帮助,如果有帮助,这是表方案的原始 SQL 吗?
值得注意的是,架构不能更改,也不能将数据库更改为 MISAM,以便我可以使用外键。
nhibernate - NHibernate 简单删除让我发疯
我正在尝试删除一个实体(ForumTopic)并删除其中的帖子(ForumPost)。这是我的实体:
使用以下映射:
但是,当我删除我的主题时,我收到以下错误:
[ForumTopic.Posts#14][SQL: UPDATE ForumPosts SET TopicID = null WHERE TopicID = @p0]
这似乎很奇怪,因为我认为在我的 HasMany 映射上说 Cascade.All()(我尝试了 Cascade.Delete())它会删除该主题的所有帖子。如果有人能告诉我我做错了什么,我将不胜感激。谢谢
sql-server - LLBLGen 级联删除?
有没有什么简单的方法可以在 LLBLGen 中做最好的描述为“级联删除”?我正在寻找的一个例子:
你有这些表:
现在,我想删除一个特定的客户和所有依赖它的东西(它的所有订单,以及它的所有订单的订单详细信息)。由于如果我在删除将其 Id 作为外键的订单之前删除客户,数据库将会出现问题,因此我几乎需要:
- 获取客户
- 获取客户的订单
- 获取每个订单的 OrderDetails
- 删除每个 OrderDetail
- 删除每个订单
- 删除每个客户
现在,这似乎是一项非常常见的任务——我认为某处有某种 Delete(Entity entityToDelete, bool isRecursive) 函数。无论如何,有什么简单的方法可以做到这一点吗?
sql-server-2008 - 级联删除和更新的优缺点是什么?
也许这是一个幼稚的问题……但我认为我们应该始终进行级联删除和更新。但我想知道它有没有问题,我们什么时候不应该这样做?我现在真的想不出你不想进行级联删除的情况,但我敢肯定有一个......但是更新应该总是完成吗?
那么任何人都可以列出级联删除和更新的优缺点吗?谢谢。
grails-orm - GORM 1:N 关联级联删除没有 belongsTo!
我想创建一个不级联删除的一对多关联。阅读它说的 Grails 参考
默认的级联行为是级联保存和更新,但不删除,除非还指定了 belongsTo
这不是我看到的行为。通过以下类实现,我得到级联更新、保存和删除,而没有任何 belongsTo:
在一个 Hibernate 会话中,我执行以下操作来验证级联更新是否有效:
然后,在另一个 Hibernate 会话中,以下代码删除 A和B 的所有实例:
这是一个错误吗?文档有错吗?我做错了什么吗?我正在使用 Grails 控制台来验证这种行为。
java - 休眠级联删除对象
我对 cascade="delete" 的工作原理感到有些困惑。我在 City 映射文件中通过以下方式定义了映射:
Client 类具有 City 类的外键。
所以当我运行时:
是否也应该删除所有客户端,还是我必须以某种方式处理它?我是否将查询作为方法参数正确传递给会话的 delete() 方法?谢谢你的帮助。最好的问候,萨斯。